Laravel + Beanstalkd:如何将"queue:listen"作为服务运行



我在项目中使用Beanstalkd作为工作队列。

现在,我的项目完成了,我必须将其部署在VPS(生产服务器)上。

有些事情让我感到困惑! 我应该通过ssh连接到生产服务器并手动键入php artisan queue:listen吗?(这是废话)

是否有任何服务器可以queue:listen作为服务运行?

你应该使用类似 Supervisor 的东西来运行生产中的队列。这将允许您在后台运行进程,指定要处理排队作业的工作器数,并在进程失败时重新启动队列。

至于您选择使用的队列,这取决于您。过去,我使用过本地安装在实例和 Amazon SQS 上的 Beanstalkd。本地实例非常适合基本的电子邮件发送和其他异步任务,SQS 非常适合消息量庞大且需要扩展的情况。还有其他SaaS产品,如IronMQ,但人们在生产中遇到问题的常见原因是因为他们没有使用Supervisor。

您可以使用apt-get安装主管。以下配置是一个很好的起点:

[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

要启动 Supervisor,您需要运行以下命令(在重新读取配置/重新启动后):

sudo supervisorctl start laravel-worker:*

该文档为您提供了一些有关使用 Supervisor 运行 Laravel 队列进程的更深入的信息。

相关内容

  • 没有找到相关文章

最新更新