Intereting Posts
Функция php для отмены заданных переменных Удалите ненужные теги с тегом regex Symfony2 и Doctrine2: идентификатор / первичный ключ для объекта «X» не указан. Каждый объект должен иметь идентификатор / первичный ключ Как разбить эту строку на массив? HTTPS и SSL3_GET_SERVER_CERTIFICATE: проверка сертификата не выполнена, CA в порядке Проверьте, установлены ли два объекта datetime PHP на одну дату (игнорируя время) Насколько актуальны отчеты Amazon MWS? Медленные ответы с использованием API-интерфейса Asana отправка клиенту сообщений клиента без взаимодействия с сервером Загрузка библиотек c из php Как иметь eclipse разрешать php-классы в пространстве имен MongoDB \ BSON? Преобразование строки в ассоциативный массив PHP Memcache для работы с API-интерфейсами с высоким временем ожидания – хорошая идея? Поле Option в HTML с PHP Проверка уникальной электронной почты с помощью DynamicFormWidget – Yii2

Queue :: later () не работает на Laravel

Я изучаю структуру Laravel и сталкиваюсь с некоторыми проблемами с очередями. Laravel предоставляет унифицированный API для работы с очередями, и я изучаю его. Одним из методов, который предоставляет Laravel, является Queue::later(DateTime|int $delay, string $job, mixed $data = '', string $queue = null);

Итак, я реализовал свой класс работы:

 <?php class SendEmail { public function send($job, $data) { Log::info('JOB: ' . $job->getName()); Log::info('DATA: ' . $data['message']); } } 

Выше, я регистрирую файл, полученные параметры. Просто знать, работает ли это или нет. Мой контроллер вызывает это задание с помощью Queue API:

 <?php class MyControllerController extends BaseController { function index() { LOG::debug('Index action STARTED'); $date = Carbon::now()->addMinutes(2); Queue::later($date, 'SendEmail@send', array('message' => 'MY MESSAGE!')); $view = View::make('index'); LOG::debug('Index action FINISHED'); return $view; } } 

Посмотрите, что я использую Queue::later() . Я ожидал, что метод send() класса SendEmail будет выполнен через 2 минуты. Ну, я закончил реализацию пустого представления и установил маршрут. Затем я сделал запрос GET моему контроллеру, и я пошел проверять файл журнала.

Я видел это, когда открыл файл журнала:

 [2014-10-02 16:23:11] production.DEBUG: Index action STARTED [] [] [2014-10-02 16:23:11] production.INFO: JOB: [] [] [2014-10-02 16:23:11] production.INFO: DATA: MY MESSAGE! [] [] [2014-10-02 16:23:11] production.DEBUG: Index action FINISHED [] [] 

Все выполнено в одно и то же время, включая работу. Queue::later() не задерживает выполнение. Я думаю, что мой файл журнала должен быть:

 [2014-10-02 16:23:11] production.DEBUG: Index action STARTED [] [] [2014-10-02 16:23:11] production.DEBUG: Index action FINISHED [] [] [2014-10-02 16:25:11] production.INFO: JOB: [] [] [2014-10-02 16:25:11] production.INFO: DATA: MY MESSAGE! [] [] 

Что случилось с моим кодом?

Извините, я только что нашел свою ошибку. Я использую драйвер sync , что означает, что задание выполняется при создании задания. Я открыл /app/config/queue.php и нашел:

 'sync' => array( 'driver' => 'sync', ), 

Я попробую с beanstalkd .