我正在运行Laravel 5,我正在尝试排队命令。我通过跑步来踢它:
Queue::push( new MyCommand() );
要创建I命令,我做了:
php artisan make:command --queued MyCommand
MyCommand包含sleep(20)
和file_put_contents('test.txt','I work!')
命令行我正在运行:
beanstalkd -l 127.0.0.1 -p 11301 &
php artisan queue:listen &
并且config / queue.php设置为:
'default' => env('QUEUE_DRIVER', 'beanstalkd'),
...
'beanstalkd' => [
'driver' => 'beanstalkd',
'host' => 'localhost:11301',
'queue' => 'default',
'ttr' => 60,
],
当我从浏览器点击代码时,它会挂起20秒并在完成之前删除文件,而不是立即返回。
在后台正确排队命令需要做些什么吗?
答案 0 :(得分:10)
请确保您在QUEUE_DRIVER
文件中设置beanstalkd
以外的任何.env
值。 env()
方法:
'default' => env('QUEUE_DRIVER', 'beanstalkd'),
将首先在当前的eviroment加载变量中搜索该键,如果没有匹配,它将回退到作为第二个参数传递的beanstalkd
值。