队列:在Laravel 5中同步处理push()

Ant*_*ony 4 php queue laravel

我正在运行Laravel 5,我正在尝试排队命令.我正在通过运行来踢它:

Queue::push( new MyCommand() );
Run Code Online (Sandbox Code Playgroud)

为了创建我的命令,我做了:

php artisan make:command --queued MyCommand
Run Code Online (Sandbox Code Playgroud)

MyCommand包含一个sleep(20)file_put_contents('test.txt','I work!')

命令行我正在运行:

beanstalkd -l 127.0.0.1 -p 11301 &
php artisan queue:listen &
Run Code Online (Sandbox Code Playgroud)

并且config/queue.php设置为:

'default'     => env('QUEUE_DRIVER', 'beanstalkd'),

...

'beanstalkd' => [
  'driver' => 'beanstalkd',
  'host'   => 'localhost:11301',
  'queue'  => 'default',
  'ttr'    => 60,
],
Run Code Online (Sandbox Code Playgroud)

当我从浏览器中搜索代码时,它会挂起20秒并在完成之前删除文件,而不是立即返回.

我需要做些什么才能在后台正确排队命令吗?

Bog*_*dan 10

确保您没有QUEUE_DRIVER除文件中beanstalkd设置之外的任何值.env.该env()方法:

'default' => env('QUEUE_DRIVER', 'beanstalkd'),
Run Code Online (Sandbox Code Playgroud)

将首先在当前的eviroment加载变量中搜索该键,如果没有匹配,它将回退到beanstalkd作为第二个参数传递的值.