【问题标题】:How does Laravel queue work and what if php artisan queue:listen stopsLaravel 队列如何工作以及如果 php artisan queue:listen 停止会怎样
【发布时间】:2014-12-22 11:17:36
【问题描述】:

我已经安装了 beanstaled,它在 laravel 中运行良好。我不解的一点是我们必须这样做

php artisan queue:listen

开始监听队列。现在,我正在通过 putty 在 amazone ec2 实例上远程使用它。但是我关闭终端是什么?通过代码创建的工作会起作用吗?是否一直手动调用php artisan queue:listen 或php artisan queue:work。这似乎不公平。

如果php artisan queue:listen一旦完成,即使我们关闭终端,它会继续运行吗?

其实我不知道。

【问题讨论】:

    标签: php laravel-4


    【解决方案1】:

    您还需要安装主管。这是一个关于在 laravel 中使用 beanstalkd 的教程:

    http://fideloper.com/ubuntu-beanstalkd-and-laravel4

    这里还有关于主管的详细信息:

    http://supervisord.org/installing.html

    我个人使用一个 redis 实例并从那里与主管一起运行我的队列。 我发现它比beantalkd个人更有效,但每个人都有自己的。

    主管将执行来自 artisan 的 queue:listen 命令,这将运行一个作业,如果您有多个主管进程,那么您可以运行多个行内项目。 取决于你在做什么,我几乎会研究 python 和 multithereading,因为我已经将它用于我曾经使用队列的一些事情,并且它提供了更好的结果。

    主管的示例配置文件:

    [program:myqueue]
    command=php artisan queue:listen --env=your_environment
    directory=/path/to/laravel
    stdout_logfile=/path/to/laravel/app/storage/logs/myqueue_supervisord.log
    redirect_stderr=true
    autostart=true
    autorestart=true
    

    【讨论】:

    • 但是php artisan queue:listen呢,主要问题是
    • 这确实回答了这个问题,虽然是间接的。 php artisan queue:listen 会运行一段时间(我不记得超时了)然后退出。这是 PHP 的限制。一旦它停止,将不再执行任何作业。要解决这个问题,请按照答案建议安装 supervisor - supervisor 将监视 queue:listen 进程并在失败时重新启动它。
    【解决方案2】:

    你也可以使用 Laravel 的 Task Scheduler,即将php artisan queue:listen 命令添加到调度器中,并将其频率设置为你想要的任何值。

    这样可以确保自动调用队列侦听过程。

    希望它会有意义。

    【讨论】:

    • 这不会在每次调度程序运行时产生一个新进程吗?
    猜你喜欢
    • 2020-11-06
    • 1970-01-01
    • 2018-11-12
    • 2022-10-20
    • 2015-07-15
    • 1970-01-01
    • 2016-03-13
    • 2021-11-02
    • 2018-01-11
    相关资源
    最近更新 更多