Queue :: later()不在Laravel上工作

Ric*_*iti 1 php queue laravel-4

我正在研究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']);
    }
}
Run Code Online (Sandbox Code Playgroud)

上面,我登录了一个文件,收到的参数.只是想知道它是否有效.我的控制器使用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;
    }
}
Run Code Online (Sandbox Code Playgroud)

看看我正在使用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 [] []
Run Code Online (Sandbox Code Playgroud)

一切都在同一时间执行,包括工作.这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! [] []
Run Code Online (Sandbox Code Playgroud)

我的代码出了什么问题?

Ric*_*iti 7

对不起,刚发现我的错误.我正在使用sync驱动程序,这意味着在创建作业时执行作业.我打开了我的/app/config/queue.php发现:

'sync' => array(
    'driver' => 'sync',
),
Run Code Online (Sandbox Code Playgroud)

我会尝试beanstalkd.