【发布时间】:2015-03-12 16:06:54
【问题描述】:
我正在运行 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 秒并在完成之前丢弃文件,而不是立即返回。
我还需要做些什么才能在后台正确排队命令吗?
【问题讨论】:
-
确定您的
sleep()调用是在handle()方法中而不是构造函数中? -
是的,它在 handle() 函数中。我会在全班更新我的问题。
-
只是为了确保您在
.env文件中没有设置除beanstalkd之外的任何QUEUE_DRIVER值? -
@Bogdan 先生好!我完全忘记了 .env 文件。那解决了它!请发表您的评论作为答案,我会标记它。