キューに追加されたジョブ(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