【问题标题】:Queue:push() being processed synchronously in Laravel 5Queue:push() 在 Laravel 5 中同步处理
【发布时间】: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 文件。那解决了它!请发表您的评论作为答案,我会标记它。

标签: php laravel queue


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-02
    • 1970-01-01
    • 1970-01-01
    • 2015-03-09
    • 1970-01-01
    • 2015-05-09
    • 2019-02-22
    • 2018-05-07
    相关资源
    最近更新 更多