如何使用php运行多个beanstalk worker

时间:2011-04-09 12:50:19

标签: php beanstalkd

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

  1. 如何使用php运行和移植多个beanstalk worker?
  2. 处理多个beanstalk worker的示例脚本?
  3. 注意:目前我正在使用pheanstalk php lib。

1 个答案:

答案 0 :(得分:6)

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

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

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

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

相关问题