Очередь заданий по продвижению PHP - PullRequest
2 голосов
/ 15 апреля 2011

Я делаю сценарий с 2000 заданиями в день, используя cron (это означает, что он находится на стороне сервера и автоматически выполняет все задания.)

, но задание требует одновременного запуска 10 (или указанного числа заданий).) jobs.

например, если вы видите IDM (менеджер загрузок в Интернете), существует функция очереди, при которой одновременно выполняется несколько заданий, и если она завершается, запускается другая.я хочу что-то вроде этого ..

как я могу это сделать?

Ответы [ 4 ]

3 голосов
/ 15 апреля 2011

Вы можете написать собственный обработчик очереди заданий. Создайте отдельный процесс для каждого задания и продолжайте собирать ответ в родительском процессе. Перезапустите новые задания после завершения предыдущих.

Или, альтернативно, вы можете углубиться в использование Gearman (особенно если у вас есть несколько ящиков, выполняющих задания параллельно). Также просмотрите решения, предложенные здесь для асинхронная обработка с php-one-worker-per-job

2 голосов
/ 15 апреля 2011

Я не согласен с созданием собственного обработчика очереди заданий.Вы столкнетесь с проблемами по линии, которую вы не ожидали, и что существующие проекты уже встречались и имели дело.

Я бы пошел с чем-то вроде beanstalkd , buildуниверсальный сценарий для обработки заданий в очереди, затем порождает $x дочерние процессы для их обработки и обработки.

1 голос
/ 23 марта 2012

Есть также очередь заданий WordPress - см. http://code.trac.wordpress.org/wiki/JobsDocs (я не использовал ее, поэтому не могу ручаться за нее)

0 голосов
/ 15 апреля 2011

Вы бы хорошо написали свой собственный обработчик очереди заданий.
Вы можете сделать php ignore_user_abort и сделать его тоже демоном ...

Но прежде чем сделать это, убедитесь, что у вас есть некоторый контроль над ним.

...