2010-12-31 9 views
5

Tak więc, w zasadzie potrzebuję uzyskać zawartość około 100-200 stron. Chciałbym użyć curl_multi_ *, aby móc pobrać wszystkie naraz, ale nie jestem pewien, czy to nawet możliwe.Chwytanie zawartości wielu uchwytów z curl multi exec?

Wiem, że z curl, po prostu ustawić opcję returntransfer na true i wyprowadzić wykonanie, ale jak to zrobić z curl_multi_ *?

Jeśli to niemożliwe, czy jest jakiś inny sposób na zrobienie tego?

Odpowiedz

-1

Jest to łatwa praca z multi-curl interfejsu.

Interfejs curl_multi zapewnia rodzaj funkcji grupowania.

Inicjujesz normalne zwijanie za pomocą łatwego interfejsu, rejestrowania do wielu uchwytów, wykonywania wielu zadań naraz, to wszystko.

Jeśli pracujesz w PHP, spójrz na stronę This (z użyciem "wielokrotnego zwijania").

+0

To naprawdę nie pomaga w ogóle. – Rob

4

Natknąłem się na to, próbując zrobić to samo. Pomyślałem, że dodam moje rozwiązanie, aby pomóc każdemu, kto ma ten sam problem w przyszłości. Po pierwsze, będę zakładać masz tablicę swojego curl teleskopowe jako takie:

$mh = curl_multi_init(); 
$requests = array(); 
foreach ($someArray as $identifier => $url) { 
    $requests[$identifier] = curl_init($url); 
    curl_setopt($requests[$identifier], CURLOPT_RETURNTRANSFER, true); 
    //any other options you need to set go here 
    curl_multi_add_handle($mh, $requests[$identifier]); 
} 

ja też zakładam, że prowadził wnioski:

do { 
    $status = curl_multi_exec($mh, $running); 
} while ($status === CURLM_CALL_MULTI_PERFORM || $running); 

Wreszcie docieramy do odpowiedzi na pytanie:

$returned = array(); 
foreach ($requests as $identifier => $request) { 
    $returned[$identifier] = curl_multi_getcontent($request); 
    curl_multi_remove_handle($mh, $request); //assuming we're being responsible about our resource management 
    curl_close($request); //being responsible again. THIS MUST GO AFTER curl_multi_getcontent(); 
} 

$returned zawiera teraz wszystkie Twoje dane.