我在项目中使用Beanstalkd作为工作队列。
现在,我的项目已经完成,我必须将其部署在VPS(生产服务器)上。
有些让我困惑的事情!我应该ssh到生产服务器并手动输入php artisan queue:listen
? (它的废话)
是否有任何服务器作为服务运行queue:listen
?
答案 0 :(得分:8)
您应该使用Supervisor之类的东西在生产中运行队列。这将允许您在后台运行该进程,指定您希望处理排队作业的工作器数,并在进程失败时重新启动队列。
对于您选择使用的队列,这取决于您。在过去,我已经在实例和Amazon SQS上本地安装了Beanstalkd。本地实例适用于基本的电子邮件发送和其他异步任务,SQS非常适用于消息量巨大且需要扩展的情况。还有其他SaaS产品,例如IronMQ,但人们在生产中遇到问题的通常原因是因为他们没有使用Supervisor。
您可以使用[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /home/forge/app.com/artisan queue:work --sleep=3 --tries=3
autostart=true
autorestart=true
numprocs=8
stdout_logfile=/home/user/app.com/worker.log
安装主管。以下配置是一个很好的起点:
php artisan queue:work
这将执行以下操作:
/home/user/app.com/worker.log
命令sudo supervisorctl start laravel-worker:*
要启动Supervisor,您将运行以下命令(重新读取配置/重新启动后):
...
function(req,res){
User.find(function(err,users){
res.json(users);
})
}
...
documentation为您提供了有关使用Supervisor运行Laravel队列流程的更深入信息。