2011-04-09 97 views
5

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

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

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

+0

还如何看多个管? – karuh24 2011-04-09 13:16:22

回答

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,然后返回一个值(与exit($x))。如果我从queue-runner返回一个值(例如),99,我退出shell脚本关闭worker。另一个值可能会立即重新启动工作人员,其他任何人都会在重新启动之前休眠几秒钟。

+0

谢谢阿利斯特。 – karuh24 2011-04-11 04:58:00

+0

上面的例子看多管是好的。但上面的脚本说,它应该在一个工作人员脚本中看多个管。假设如果想要重新启动特定的管,我该如何重新启动特定的管?以及如何分别管理每个管道?我们是否需要为每个管子写工人脚本?如果是这样,那么多个工作人员的启动脚本呢?如何在init.d中管理多个工作者脚本? – karuh24 2011-04-11 05:33:36

+0

重新启动管道是什么意思?例如,您希望同一个脚本可以多次运行,以观察单个管道,然后启动多个工作人员,并且可以在命令行上传递管道名称。 – 2011-04-11 20:46:59

相关问题