RabbitMQ中的排队PHP脚本

问题描述 投票:1回答:1

我正在尝试在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,以一次运行多个脚本。目前,这是不可能的,因为所有脚本都会立即从队列中拉出。

有什么想法吗?

php rabbitmq
1个回答
0
投票

我似乎通过在shell_exec()函数中的action($msg)后面简单添加一行就解决了这个问题。

public function action($msg)
        {
            $message = $msg->body ;

            shell_exec($message);

            send_remote_syslog("Job complete: $message", "mis-update-queue");

        }

我很想知道为什么会这样...

© www.soinside.com 2019 - 2024. All rights reserved.