我有一个 PHP 脚本,用于等待 AMQP 消息。当收到一条消息时,它会被处理,处理完成后,它会等待下一条消息。
问题当然是这会造成阻塞。例如,如果一条传入消息需要我联系外部 REST API,则处理可能需要几秒钟才能完成,而这段时间内它将无法处理其他消息。
我可以多次启动我的脚本,例如 8 次。这样我就有 8 个“消费者”,这似乎很有效。但是,现在的问题是,我该如何管理这 8 个不同的进程?
我基本上是在寻找一些实用程序,允许我指定我想要启动特定脚本 8 次,然后能够监视这些进程的正常运行时间等。有这样的实用程序吗?
答案1
使用 upstart。
编辑 /etc/init/whateveryouwant.conf
start on runlevel [2345]
task
env CONSUMERS=8
script
for i in `seq 1 $CONSUMERS`
do
start /fullpath/to/your/script/here CONSUMER=$i
done
end script
respawn limit 15 5
然后你可以使用service whateveryouwant start
service whateveryouwant stop