0

我有beantalkd设置。我正在使用 pheanstalk php 库来添加工作和我的工人。

添加作业正常工作,我将作业 ID 记录在我的数据库中以供以后参考。没有工作 id 被跳过 IE:他们按顺序进入那里,编号:1,2,3,4

现在工作的部分是工人。他们在做他们应该做的事情,但我让他们中的三个在运行,出于某种原因,同一个工作会运行两到三遍,而不是只运行一次。

我不确定为什么会发生这种情况我只是使用带有内存检查的while循环+我的工作代码来监视新工作。

这是该代码的开始。

    while (1) {
        $job = $this->pheanstalk->watch('my_tube')->ignore('default')->reserve();
        $job_decoded = json_decode($job->getData(), false);

这是 benstalk 控制台的输出。忽略第一行,因为那是我不使用的默认管。

在此处输入图像描述

在队列中再添加一项作业后,总列增加到 4 并且没有其他任何变化。

4

1 回答 1

1

我发现这个问题是一个错误,导致第一个工人做它应该做的事情,但在移除工作之前崩溃了。

所以下一个工人会捡起它,它会无法跳转到我的 catch 块并绕过 php 错误,然后删除该作业。

于 2013-07-31T15:34:33.077 回答