我正在运行 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 秒并在完成之前删除文件,而不是立即返回。

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

最佳答案

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

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

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

10-08 19:33