Tôi cần kiểm tra xem công việc đã được thêm vào hàng đợi (Beanstalkd) đã được hoàn thành trong Laravel (Laravel 5) chưa. nhiệm vụ được thêm vào hàng đợi cập nhật bản ghi trong cơ sở dữ liệu). Tôi đã thêm vào composer.json
tôi:Làm thế nào để kiểm tra xem công việc trong hàng đợi Beanstalkd đã được hoàn thành trong Laravel
"pda/pheanstalk": "3.*"
tôi thêm công việc phải xếp hàng theo cách này:
$jobId = Queue::push('App\Class', $object->toArray(), $this->getQueueName());
tôi sử dụng để kiểm tra xem công việc được hoàn thành sử dụng là chức năng sau:
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;
}
Câu hỏi đặt ra là - đó là phương pháp đáng tin cậy để kiểm tra xem công việc đã được hoàn thành chưa? Tôi so sánh ở đây chỉ là thông điệp tôi nhận được từ ngoại lệ. Tôi đã không tìm thấy bất kỳ cách nào khác để kiểm tra xem công việc đã được hoàn thành chưa.
Bạn nói đúng, nhưng công việc đi đến công việc thất bại khi không thành công. Vì vậy, khi tôi muốn kiểm tra xem công việc đã được hoàn thành ngay cả khi tôi nhìn vào công việc thất bại, tôi cần phải kiểm tra bằng cách nào đó nếu công việc vẫn còn trong hàng đợi bởi vì nó có thể vẫn còn trong hàng đợi và không phải trong công việc thất bại. –
Hey, có vẻ như pbeanstalk không cung cấp một cách để có được một danh sách toàn bộ các công việc đang chạy. Bạn có thể lưu trữ thông tin liên quan đến công việc vào cơ sở dữ liệu và đánh dấu trạng thái của nó khi nó bị xóa hoặc thất bại. – Ray