2013-07-01 1 views
5

Я довольно новичок во всей работе Queue'd в Laravel 4. У меня есть некоторые тяжелые задачи процесса. Мне нужно, чтобы сайт работал в фоновом режиме после того, как пользователь уволил конкретное действие.Как запустить Laravel Queues с beanstalkd

Когда я делаю местное развитие для моего сайта я использую это:

Queue::push('JobClass', array('somedata' => $dataToBeSent)); 

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

Который подводит меня туда, где я сейчас. У меня есть beanstalkd, настроенный с зависимостями, установленными с композитором, и процесс beanstalkd, прослушивающий новые задания. Я установил интерфейс администратора beanstalk и вижу, что мои задания попадают в очередь, но я понятия не имею, как на самом деле заставить их работать!

Любая помощь была бы apprieciated, спасибо!

ответ

18

На самом деле это очень плохо документированная функция в Laravel.

Что вам нужно сделать, так это иметь JobClass.php в автоматически загружаемой папке, я использую приложения/команды, но они также могут быть в приложении/контроллерах или приложениях или моделях, если хотите. И эта функция должна иметь событие пожара, которое принимает аргумент $ job и $ data.

Чтобы запустить их, просто выполните php artisan queue:listen --timeout=60 в вашем терминале, и он будет занят опустошением очереди, пока он не станет пустым, или он работает более 60 секунд. (Небольшое примечание: тайм-аут - это время, равное , начало очереди, поэтому он может работать в течение 69 секунд, если 1 занятие занимает 10 секунд.

Если вы хотите только выполнить 1 задание (идеально подходит для тестирования) запустить php artisan queue:work

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

+0

Спасибо, что все! – Tyrone

+0

Спасибо. Laravel действительно нуждается в лучшей документации. Отличная структура, но с паршивой документацией все еще отстой. – woens

0

Имейте в виду, что вам нужно пройти свой ремесленник.

php/some/path/to/artisan queue: work