Pheanstalk储备功能

时间:2016-05-23 05:45:35

标签: php beanstalkd pheanstalk

我刚刚开始使用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函数会将其中一些用完。队列的条件可能导致保留功能失​​效吗?非常感谢任何反馈!

1 个答案:

答案 0 :(得分:2)

Beanstalk保留将永久运行,直到作业准备好

  

reserve阻止工作准备就绪,可能永远。如果不需要,我们可以调用超时(以秒为单位)保留我们想要等待多长时间来接收作业。如果此类预留超时,则会返回None

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

找到此here

相关问题