Laravel如何排队工作,如果php artisan队列:listen停止怎么办?

时间:2014-12-22 11:17:36

标签: php laravel-4

我已经安装了beanstaled并且它与laravel一起工作正常。我困惑的地方是我们必须做的事情

php artisan queue:listen

开始侦听队列。现在,我通过putty在amazone ec2实例上远程使用它。但是什么是我关闭终端?通过代码创建的作业是否有效?它是否一直手动调用php artisan queue:listenphp artisan queue:work。哪个看起来不公平。

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

其实我不知道。

2 个答案:

答案 0 :(得分:11)

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

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

以下是主管的详细信息:

http://supervisord.org/installing.html

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

Supervisor将执行来自artisan的queue:listen命令,这将运行一个作业,如果您有多个管理程序进程,那么您可以在行项目中运行多个。 根据你正在做的事情,我几乎会考虑python和多线程,因为我已经将它用于我曾经使用队列的一些事情,它提供了更好的结果。

主管的配置文件示例:

[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

答案 1 :(得分:0)

您还可以使用Laravel的任务计划程序,即将php artisan queue:listen命令添加到计划程序,并将其频率设置为您想要的任何值。

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

希望它有意义。