Ho bisogno di controllare se il lavoro aggiunto alla coda (Beanstalkd) è stato completato in Laravel (Laravel 5) e nel caso sia completato ho bisogno di restituire il record aggiornato (attività aggiunta al record degli aggiornamenti della coda nel database). Ho aggiunto al mio composer.json
:Come verificare se il lavoro nella coda Beanstalkd è stato completato in Laravel
"pda/pheanstalk": "3.*"
aggiungo lavoro di coda in questo modo:
$jobId = Queue::push('App\Class', $object->toArray(), $this->getQueueName());
che uso per controllare se lavoro è stato completato utilizzando è la seguente funzione:
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;
}
La domanda è: è un metodo affidabile per verificare se il lavoro è stato completato? Paragono qui solo il messaggio che ottengo dall'eccezione. Non ho trovato nessun altro modo per verificare se il lavoro è stato completato.
Hai ragione, ma il lavoro passa ai lavori falliti quando fallisce. Quindi, quando voglio verificare se il lavoro è stato completato anche se ho esaminato i lavori falliti, ho bisogno di controllare in qualche modo se il lavoro è ancora in coda perché potrebbe essere ancora in coda e non in lavori falliti. –
Ehi, sembra che pbeanstalk non offra un modo per ottenere un intero elenco di lavori in esecuzione. È possibile memorizzare le informazioni relative al lavoro nel database e contrassegnarne lo stato quando viene eliminato o non riuscito. – Ray