Очередь :: позже () не работает на Laravel

Я изучаю Laravel Framework и сталкиваюсь с некоторыми проблемами с очередями. 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! [] []

Что не так с моим кодом?

1

Решение

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

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

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

5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]