我们使用PHP gearman workers来并行运行各种任务。一切都很顺利,我有一个简单的shell脚本以启动它们。作为一个程序员(因此很懒),我想知道是否可以通过upstart脚本启动它们。
我弄清楚了如何使用实例标记,因此我可以使用实例号启动它们:
description "Async insert workers"
author "Mike Grunder"
env SCRIPT_PATH="/path/to/my/script"
instance $N
script
php $SCRIPT_PATH/worker.php
end script
这很好用,只需像这样启动它们:
sudo start async-worker N=1
sudo start async-worker N=2
我想使用这些工作进程的方式是启动一些它们(也许每个核心一个),我希望在启动时就这样做。需要明确的是,我不需要upstart脚本检测内核数。我很乐意只说“运行8个实例”,但这就是我想要多个运行的原因。有没有办法在upstart脚本中使用“start on”子句自动执行此操作?例如,启动实例1、2、3、4?然后使它们能够在关闭时正确退出?
我想我可以将其连接到init.d脚本中,但我想知道upstart是否可以处理这样的事情,或者是否有人已经解决了这个问题。
谢谢大家!