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

Ham*_*ava 2 php beanstalkd laravel

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

现在,我的项目已经完成,我必须在VPS(生产服务器)上部署它.

有些让我困惑的事情!我应该ssh到生产服务器并手动输入php artisan queue:listen?(这是垃圾)

有没有服务器queue:listen作为服务运行?

edc*_*dcs 8

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

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

您可以安装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
Run Code Online (Sandbox Code Playgroud)

这将执行以下操作:

  • 为队列工作者指定一个唯一的名称
  • 运行php artisan queue:work命令
  • 在系统重新启动时自动启动队列工作程序,并在队列失败时自动重新启动它们
  • 跨八个进程运行队列工作程序(可根据您的需要增加或减少)
  • 记录任何输出 /home/user/app.com/worker.log

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

sudo supervisorctl start laravel-worker:*
Run Code Online (Sandbox Code Playgroud)

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

  • 我们每天使用Beanstalkd超过3M ops,它很棒,因为它是开源的,有很好的指标以及优秀的管理面板:https://github.com/ptrofimov/beanstalk_console (2认同)