我正在尝试在PHP中使用RabbitMQ来连续运行约40个脚本。到目前为止,我所能做的是某种程度的工作,但还不尽如人意。
一个PHP脚本(最终将安排在每晚运行)将一系列消息发送到队列,如下所示:
php public_html/worker/mis-update-school.php 9195408 1
php public_html/worker/mis-update-school.php 8954001 1
php public_html/worker/mis-update-school.php 3424051 1
然后这些被消费者接收并像这样执行:
public function action($msg)
{
$message = $msg->body ;
shell_exec($message);
}
这似乎有效,因为它在等待下一个脚本开始之前等待每个脚本完成。但是,这似乎是通过PHP而不是RabbitMQ进行的。所有的Rabbit MQ消息似乎都在同一时间使用。
我如何告诉RabbitMQ等待shell_exec()
完成后再处理下一条消息?
这很重要的原因是,在忙碌的时候,我希望能够向队列添加更多的dyno,以一次运行多个脚本。目前,这是不可能的,因为所有脚本都会立即从队列中拉出。
有什么想法吗?
我似乎通过在shell_exec()
函数中的action($msg)
后面简单添加一行就解决了这个问题。
public function action($msg)
{
$message = $msg->body ;
shell_exec($message);
send_remote_syslog("Job complete: $message", "mis-update-queue");
}
我很想知道为什么会这样...