Queue:push() 在 Laravel 5 中同步处理
Queue:push() being processed synchronously in Laravel 5
我是 运行 Laravel 5,我正在尝试让命令排队。我将在 运行:
开始
Queue::push( new MyCommand() );
为了创建命令,我做了:
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 秒并在完成之前丢弃文件,而不是立即返回。
我还需要做些什么才能在后台正确排队命令吗?
确保 .env
文件中没有设置 beanstalkd
以外的任何 QUEUE_DRIVER
值。 env()
方法:
'default' => env('QUEUE_DRIVER', 'beanstalkd'),
将首先在当前加载的环境变量中搜索该键,如果没有匹配项,它将回退到作为第二个参数传递的 beanstalkd
值。
我是 运行 Laravel 5,我正在尝试让命令排队。我将在 运行:
开始Queue::push( new MyCommand() );
为了创建命令,我做了:
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 秒并在完成之前丢弃文件,而不是立即返回。
我还需要做些什么才能在后台正确排队命令吗?
确保 .env
文件中没有设置 beanstalkd
以外的任何 QUEUE_DRIVER
值。 env()
方法:
'default' => env('QUEUE_DRIVER', 'beanstalkd'),
将首先在当前加载的环境变量中搜索该键,如果没有匹配项,它将回退到作为第二个参数传递的 beanstalkd
值。