Захватить содержимое нескольких ручек curl из multi exec curl? - PullRequest
5 голосов
/ 31 декабря 2010

Итак, в основном мне нужно получить содержимое около 100-200 веб-страниц. Я хотел бы использовать curl_multi_ *, чтобы я мог получить все сразу, но я не уверен, что это вообще возможно.

Я знаю, с помощью curl, вы просто установите для параметра returntransfer значение true и выведите результат выполнения, но как бы я сделал это с curl_multi _ *?

Если невозможно, есть ли другой способ сделать это?

Ответы [ 2 ]

4 голосов
/ 31 марта 2012

Я наткнулся на это, пытаясь сделать то же самое сам.Я решил добавить свое решение, чтобы помочь любому, кто столкнется с такой же проблемой в будущем.Во-первых, я предполагаю, что у вас есть массив ваших обработчиков curl:

$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]);
}

Я также предполагаю, что вы запустили запросы:

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

Наконец, мы получаем ответна ваш вопрос:

$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 теперь содержит все ваши данные.

0 голосов
/ 31 декабря 2010

Работать с мультиинтерфейсом curl очень просто.

Интерфейс curl_multi обеспечивает функцию группирования.

Вы запускаете обычную операцию скручивания с простым интерфейсом, регистрируетесь в multi handle,выполнить несколько заданий одновременно, вот и все.

Если вы работаете в PHP, взгляните на эту страницу (в которой гуглилось 'curl multiple').

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...