5

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

  1. 如何使用 php 运行和解除多个 beanstalk 工作人员?
  2. 处理多个豆茎工作者的示例脚本?

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

4

1 回答 1

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。另一个值可能会立即重新启动工作程序,其他任何东西都会在重新启动之前休眠几秒钟。

于 2011-04-09T23:35:38.580 回答