如何使用php运行多个beanstalk worker

kar*_*h24 5 php beanstalkd

截至目前,我只为我的项目运行一个beanstalk工作线程,该线程处理基于cron的作业和实时作业.所以,我想把它分成两个工人.一个工作程序用于跟踪基于cron的作业,另一个工作程序用于跟踪实时异步作业.这样,工人的效率就会提高.任何人都可以帮助我,

  1. 如何使用PHP运行和deamonize多个beanstalk工作者?
  2. 一个处理多个beanstalk工作者的示例脚本?

注意:目前我正在使用pheanstalk php lib.

Ali*_*man 6

使用pheanstalk(或其他库),如果您想接受来自多个队列的作业 - 只需观看它们即可.

$pheanstalk->watch('testtube')
           ->watch('tube2')
           ->watch('tube3');
$pheanstalk->reserve();  // get the next job from any of the tubes (+ 'default')
Run Code Online (Sandbox Code Playgroud)

至于处理工作者,我目前正在使用Supervisord来处理一些我想要继续运行的非常相似的脚本.它是一个基于python的守护进程,你想要运行的脚本列在一个非常简单的配置文件中.(添加更多工作人员实际上是在更改单个数字,并重新加载配置).

我做的一件事是基于运行工作者的博客文章.Supervisord运行shell脚本.该脚本运行PHP,而PHP又返回一个值(with exit($x)).如果我从queue-runner返回一个值,(例如),99,我退出shell脚本来关闭worker.另一个值可能会立即重新启动工作程序,其他任何东西,在重新启动之前会休眠几秒钟.