pheanstalk поиск быстро работу

У меня проблема с очередью в pheanstalk (версия: 3.0.2). В очереди 0-10 тыс. Заданий, и иногда я должен искать данные в этой очереди и добавлять следующие задания. Поэтому я хочу добавить вакансии, которые не существуют.

В классе Pheanstalk я не вижу метод, который ищет работу, и не перемещает эту работу в «current-jobs-reserved».

Поэтому мне нужен быстрый метод, который только читает данные в работе без резервирования.

Мой пример:

   public function searchId($id)
{
$pheanstalk = $this->getPhenstalk();

while ($job = $pheanstalk->reserveFromTube(self::TUBE)) {
$json = $job->getData();
$data = json_decode($json, true);

if($data['id'] == $id){
return true;
}
$pheanstalk->release($job);

}
return false;
}

Но relayse () нужно много времени. Как я могу это сделать?

0

Решение

Как в ‘Как я могу получить список всех работ в трубочном бобе?‘ ответ, Beanstalkd не является массивом. Он не предназначен для поиска, просто для того, чтобы получить следующую работу.

То, что вы делаете с массовым резервом / выпуском, просто помещает их обратно в очередь, вполне возможно, что это будет следующая вещь, которую вы зарезервируете, и так далее в бесконечном цикле.

Если вы хотите увидеть, находится ли конкретное задание / имя / идентификатор задания в очереди, запишите это в другом месте, в другом хранилище данных — например, Redis или memcached. Сделайте запись, когда вы поместите работу в очередь, и удалите ее, когда работа была удалена из Beanstalkd.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]