beanstalkd + pheanstalk匆忙的情况

时间:2013-07-30 21:04:46

标签: php beanstalkd pheanstalk

我有beanstalkd设置。我正在使用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控制台的输出。忽略第一行,因为这是我没有使用的默认管。

enter image description here

在向队列中再添加一个作业后,总列会变为4,而其他任何内容都不会更改。

1 个答案:

答案 0 :(得分:1)

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

所以接下来的工作人员会把它拿起来,然后跳转到我的catch块并绕过php错误然后删除该作业。