Мне нужно проверить, было ли выполнено задание, добавленное в очередь (Beanstalkd) в Laravel (Laravel 5), и в случае его завершения мне нужно вернуть обновленную запись (задача добавлена в запись обновлений очередей в базе данных). Я добавил к моему composer.json
:Как проверить, выполнено ли задание в очереди Beanstalkd в Laravel
"pda/pheanstalk": "3.*"
добавить работу в очередь так:
$jobId = Queue::push('App\Class', $object->toArray(), $this->getQueueName());
я использую, чтобы проверить, если работа была завершена с помощью является следующая функция:
public function find($queueName, $jobId, $recordId)
{
$phean = Queue::getPheanstalk();
try {
$phean->peek($jobId);
$data = ['status' => 'waiting'];
} catch (ServerException $e) {
$message = $e->getMessage();
if ($message == 'NOT_FOUND: Job ' . $jobId . ' does not exist.') {
$data = ... // here I get from database data for $recordId
} else {
$data = ['status' => 'error'];
}
}
return $data;
}
Вопрос в том, является ли надежный метод проверки выполнения задания? Я сравниваю здесь только сообщение, которое я получаю от исключения. Я не нашел другого способа проверить, выполнено ли задание.
Вы правы, но работа идет к неудачным работам, когда он терпит неудачу. Поэтому, когда я хочу проверить, завершено ли задание, даже если я искал неудачные задания, мне нужно как-то проверить, работает ли задание в очереди, потому что оно может оставаться в очереди, а не в неудачных заданиях. –
Эй, похоже, что pbeanstalk не предлагает способ получить полный список рабочих заданий. Вы можете сохранить информацию о работе в базу данных и пометить ее статус при ее удалении или сбое. – Ray