abgeschlossen ist Ich muss überprüfen, ob Job in der Warteschlange (Beanstalkd) in Laravel (Laravel 5) abgeschlossen wurde und falls es fertig ist muss ich aktualisierte Datensatz (Aufgabe hinzugefügt zum Warteschlangenaktualisierungsdatensatz in der Datenbank). Ich habe zu meinem composer.json
hinzugefügt:Wie überprüft man, ob der Job in der Beanstalkd-Warteschlange in Laravel
"pda/pheanstalk": "3.*"
ich Job hinzufügen auf diese Weise in der Warteschlange:
$jobId = Queue::push('App\Class', $object->toArray(), $this->getQueueName());
ich überprüfen, ob Auftrag abgeschlossen wurde verwendet, ist die folgende Funktion:
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;
}
Die Frage ist - ist das eine zuverlässige Methode, um zu überprüfen, ob der Job abgeschlossen wurde? Ich vergleiche hier nur die Nachricht, die ich von der Ausnahme bekomme. Ich habe keine andere Möglichkeit gefunden zu überprüfen, ob der Job abgeschlossen wurde.
Sie haben Recht, aber Job geht zu fehlgeschlagenen Jobs, wenn es fehlschlägt. Wenn ich überprüfen möchte, ob der Job abgeschlossen wurde, selbst wenn ich nach fehlgeschlagenen Jobs gesucht habe, muss ich irgendwie überprüfen, ob der Job noch in der Warteschlange ist, weil er sich immer noch in der Warteschlange befindet und nicht in fehlgeschlagenen Jobs. –
Hey, es scheint, dass pbeanstalk keine Möglichkeit bietet, eine ganze Liste laufender Jobs zu erhalten. Sie können berufsbezogene Informationen in der Datenbank speichern und ihren Status markieren, wenn sie gelöscht oder fehlgeschlagen sind. – Ray