我刚刚开始使用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
函数会将其中一些用完。队列的条件可能导致保留功能失效吗?非常感谢任何反馈!
答案 0 :(得分:2)
Beanstalk保留将永久运行,直到作业准备好
reserve
阻止工作准备就绪,可能永远。如果不需要,我们可以调用超时(以秒为单位)保留我们想要等待多长时间来接收作业。如果此类预留超时,则会返回None
:
>>> beanstalk.reserve(timeout=0) is None
True
找到此here