截至目前,我只为我的项目运行一个beanstalk工作线程,该线程处理基于cron的作业和实时作业.所以,我想把它分成两个工人.一个工作程序用于跟踪基于cron的作业,另一个工作程序用于跟踪实时异步作业.这样,工人的效率就会提高.任何人都可以帮助我,
注意:目前我正在使用pheanstalk php lib.
使用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.另一个值可能会立即重新启动工作程序,其他任何东西,在重新启动之前会休眠几秒钟.
| 归档时间: |
|
| 查看次数: |
5804 次 |
| 最近记录: |