Php 队列:正在Laravel 5中同步处理push()
我正在运行Laravel5,我正在尝试获取队列命令。我开始跑步:Php 队列:正在Laravel 5中同步处理push(),php,laravel,queue,Php,Laravel,Queue,我正在运行Laravel5,我正在尝试获取队列命令。我开始跑步: Queue::push( new MyCommand() ); 要创建I命令,我执行了以下操作: php artisan make:command --queued MyCommand MyCommand包含一个sleep(20)和file\u put\u内容('test.txt','I work!') 我正在运行的命令行: beanstalkd -l 127.0.0.1 -p 11301 & php artisan
Queue::push( new MyCommand() );
要创建I命令,我执行了以下操作:
php artisan make:command --queued MyCommand
MyCommand包含一个sleep(20)
和file\u put\u内容('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
之外,您没有任何队列驱动程序
值。env()
方法:
'default' => env('QUEUE_DRIVER', 'beanstalkd'),
将首先在当前eviroment加载的变量中搜索该键,如果没有匹配项,它将返回作为第二个参数传递的
beanstalkd
值。确保sleep()
调用在handle()
方法中,而不是构造函数中?是的,它在handle()函数中。我将用全班同学更新我的问题。只是为了确保,除了.env
文件中设置的beanstalkd
之外,您没有任何队列驱动程序
值?@Bogdan很好,先生!我完全忘记了.env文件。这就解决了!请将您的评论作为答案发布,我将标记它。