0

我刚刚开始使用 pheanstalk 并且遇到了保留功能的问题。我有以下用于工作脚本的代码:

<?php
  //... code that requires the autoload.php page among and other

  $queue = new Pheanstalk_Pheanstalk("127.0.0.1:11300");
  $queue->watch("action_tube");
  $job = $queue->reserve();

  //... code that would then output the information obtained from the job
?>

我遇到的问题是执行保留功能时代码总是卡住。我知道它卡在那里的事实是因为我经历了在浏览器中运行此代码并echo在注释掉代码时使用以查看代码卡住的确切位置。就好像在储备函数内部发生了一个无限循环。

例如,如果我要注释掉$job = $queue->reserve(),代码会自由地低并且页面会立即加载,但是如果我不注释掉它,浏览器中的循环加载会一直持续下去。

问题:为什么我会遇到这个问题?这对于储备功能是否正常?它只是等待队列中出现的东西吗?我确实有"action_tube"从以前的脚本创建的队列,所以我认为该reserve函数会删除其中的一些。队列的状况是否会导致保留功能停止?非常感谢任何反馈!

4

1 回答 1

3

Beanstalk 储备将永远运行,直到工作准备好

reserve阻塞,直到工作准备好,可能永远。如果不希望这样,我们可以使用超时(以秒为单位)调用保留,我们希望等待多长时间来接收作业。如果这样的保留超时,它将返回None

>>> beanstalk.reserve(timeout=0) is None
True

在这里找到这个

于 2016-05-23T05:53:40.730 回答