Я только начал использовать 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
комментируя код, чтобы точно определить, где код застревает. Как будто внутри резервной функции происходит бесконечный цикл while.
Например, если бы я закомментировать $job = $queue->reserve()
код будет свободно уменьшаться, и страница будет немедленно загружаться, однако, если я не закомментирую это, загрузка круга в браузере будет продолжаться вечно.
ВОПРОС: Почему у меня может быть эта проблема? Это нормально для резервной функции? Он просто ждет, пока что-то появится в очереди? У меня действительно есть "action_tube"
очередь, созданная из предыдущего сценария, поэтому я думаю, что reserve
Функция будет принимать некоторые из них. Может ли состояние очереди вызвать остановку резервной функции? Любая обратная связь с благодарностью!
Запас Beanstalk будет работать вечно, пока работа не будет готова
reserve
блокирует, пока работа не будет готова, возможно, навсегда. Если это нежелательно, мы можем вызвать резерв с тайм-аутом (в секундах), как долго мы хотим ждать, чтобы получить работу. Если такой резерв истекает, он вернетсяNone
:
>>> beanstalk.reserve(timeout=0) is None
True
Нашел это Вот
Других решений пока нет …