截至目前,我只为我的项目运行一个豆杆工作线程,该线程同时处理基于cron的作业和实时作业。所以,我想把它分成两个工人。一名工作人员用于跟踪基于cron的作业,另外一名工作人员用于跟踪实时异步作业。这样,工人的效率就会提高。任何人都可以帮助我,如何使用php运行多个豆杆工作人员
- 如何使用php运行和deamonize多个beanstalk工作?
- 处理多个豆杆工作者的示例脚本?
注意:目前我正在使用pheanstalk php lib。
截至目前,我只为我的项目运行一个豆杆工作线程,该线程同时处理基于cron的作业和实时作业。所以,我想把它分成两个工人。一名工作人员用于跟踪基于cron的作业,另外一名工作人员用于跟踪实时异步作业。这样,工人的效率就会提高。任何人都可以帮助我,如何使用php运行多个豆杆工作人员
注意:目前我正在使用pheanstalk php lib。
如果你想接受来自多个队列的工作 - 只要看着它们,就可以使用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。另一个值可能会立即重新启动工作人员,其他任何人都会在重新启动之前休眠几秒钟。
谢谢阿利斯特。 – karuh24 2011-04-11 04:58:00
上面的例子看多管是好的。但上面的脚本说,它应该在一个工作人员脚本中看多个管。假设如果想要重新启动特定的管,我该如何重新启动特定的管?以及如何分别管理每个管道?我们是否需要为每个管子写工人脚本?如果是这样,那么多个工作人员的启动脚本呢?如何在init.d中管理多个工作者脚本? – karuh24 2011-04-11 05:33:36
重新启动管道是什么意思?例如,您希望同一个脚本可以多次运行,以观察单个管道,然后启动多个工作人员,并且可以在命令行上传递管道名称。 – 2011-04-11 20:46:59
还如何看多个管? – karuh24 2011-04-09 13:16:22