Обработка множества URL с помощью CURL - PullRequest
0 голосов
/ 24 февраля 2011

Я работаю над проектом, который должен переместить / записать кучу файлов (их сотни).Сейчас они выполняются один за другим, поэтому я собираюсь делать это параллельно, чтобы ускорить процесс.

Самая большая работа выполнена с использованием модифицированной версии класса PHP, найденной здесь: http://semlabs.co.uk/journal/object-oriented-curl-class-with-multi-threading

Прямо сейчас я могу добавить 100 URL-адресов и затем сказать сценарию, чтобы он анализировал 10 URL-адресов параллельно,Это, однако, означает, что я должен ждать, пока первые 10 не будут выполнены, чтобы сделать следующие 10.

Мне было интересно, есть ли способ настроить его как очередь?Начните с 10, затем, как только первый будет сделан (тот из 10, который сделан первым), перейдите к номеру 11 и т. Д.

Есть ли способ сделать это вPHP?(не имеет для CURL).Любая помощь будет принята с благодарностью:)

Ответы [ 4 ]

0 голосов
/ 24 февраля 2011

Похоже на работу для Gearman . Вы бы отправили каждый список из 10 URL-адресов как задание, и у вас должно быть несколько рабочих, которые подберут задания, как только они станут доступны. Преимущество этого состоит в том, что вы можете тривиально улучшить параллелизм позже, запустив больше рабочих (даже на разных машинах).

0 голосов
/ 24 февраля 2011

Ваш скрипт может генерировать «токен запроса обработки» (на основе БД или файловой системы), который будет обрабатываться фоновыми демонами.Каждый демон начинает с «поедания» токена, затем обрабатывает вещи, если каждый демон может обработать 10 URL, просто запустите 10 демонов, чтобы обрабатывать 100 URL за раз ...

0 голосов
/ 24 февраля 2011

Есть ли у вас доступ к серверу, на котором размещен ваш сайт? то есть. У вас есть возможность настраивать задания cron / ваши собственные программы (т.е. запускать php из консоли)?

0 голосов
/ 24 февраля 2011

Один из возможных вариантов - использование заданий CRON.

Другой вариант - Zend_Queue, но я думаю, что его требование - Zend Server.Я не уверен, однако.

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