2014-11-05 4 views
0

Я выскабливанием данных для URL с помощью CurlCurl с многопоточной

For (i=0; i<1000000; i++) { 

    $curl_handle=curl_init(); 
    curl_setopt($curl_handle,CURLOPT_URL,'http://example.com?page='i); 
    curl_exec($curl_handle); 
    curl_close($curl_handle); 

    // some code to save the HTML page on HDD 
} 

Я хотел бы знать, есть ли какой-то образом, что я мог бы ускорить этот процесс? может быть Multi Threading? Как я могу это сделать?

+0

Вы можете реализовать что-то вроде асинхронного вызова, здесь ссылка -> https://segment.com/blog/how-to-make-async-requests-in-php/ – krish

+0

Также SO answer @http: // stackoverflow .com/вопросы/124462/асинхронные-PHP-звонки – krish

ответ

0

Вы ищете набор функций curl_multi_*: «Позволяет обрабатывать несколько ручек cURL параллельно».

Взгляните на complete example on the curl_multi_init() page.

Проверьте эти статьи для получения дополнительной информации о том, как curl_multi_exec() работах:

2

Curl несколько не делают параллельные запросы, это делает асинхронные запросы.

Документация была неправильной до 5 минут назад, потребуется, чтобы исправленная документация была развернута и переведена.

Асинхронный ввод-вывод (используя что-то вроде CURL Multi API) - это самая простая задача, однако он может выполнять запросы только асинхронно; обработка данных после загрузки, например запись на диск, по-прежнему вызывает множество блокирующих операций ввода-вывода, аналогичная дальнейшая обработка данных (например, анализ json) будет происходить синхронно в одном потоке выполнения.

Многопоточность - это другой вариант, для этого требуется, чтобы у вас была потоковая сборка PHP и расширение pthreads.

Многопоточность имеет то преимущество, что вся обработка может выполняться для каждой загрузки и последующих действий параллельно, полностью используя все доступные ядра ЦП.

Что лучше всего зависит в значительной степени от того, сколько обработки загруженных данных должен выполнять ваш код, и даже тогда это может считаться вопросом мнения.

Смежные вопросы