2014-11-03 94 views

回答

0

使用while和generator(yield)。

$client = new GuzzleHttp\Client(); 

$client = new Client(); 

$requests = function() { 
    $uris = ['http://base_url']; 
    $visited_uris = []; // maybe database instead of array 

    while(len($uris)>0) 
    yield new Request('GET', array_pop($uris)); 
    } 
}; 

$pool = new Pool($client, $requests(), [ 
    'concurrency' => 5, 
    'fulfilled' => function ($response, $index) { 
    $new_uri = get_new_uri(); // implement function to get new $uri 
    if(in_array($new_uri, $visited_uris)) { 
     array_push($uris, $uri); 
    } 

    array_push($visited_uris, $uri); 
    } 
]); 

$promise = $pool->promise(); 
$promise->wait(); 
相關問題