Відстежуйте прогрес і статус завдань у Laravel за допомогою пакету Laravel Job Status

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 30 квітня, 2025
Ви коли-небудь замислювалися, як просто відстежувати статус ваших чергових завдань у Laravel? У нашій статті ви дізнаєтеся про пакет laravel-job-status, який автоматично зберігає статуси завдань у базі даних, спрощуючи процес моніторингу прогресу ваших фоновых задач

Пакет laravel-job-status надає простий спосіб відстежувати статус та прогрес ваших завдань у черзі. Він автоматично зберігає статуси завдань у базі даних, що дозволяє вам запитувати та відображати поточний прогрес, статус і результати будь-якого фонового завдання у вашому застосунку.

Щоб відстежувати статус завдання в черзі, потрібно додати трейт Trackable, що надається цим пакетом:

use Imtigger\LaravelJobStatus\Trackable;
 
class MyJob implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels, Trackable;
 
    public function __construct(array $params)
    {
        $this->prepareStatus();
        // ...
    }
 
    public function handle()
    {
        $this->setProgressNow(10, 100); // Встановлення поточного прогресу
        $this->setProgressMax(100); // Встановлення максимальної межі прогресу
 
        // Виконання роботи...
 
        $this->setOutput(['message' => 'Завдання завершено!']);
    }
}

Коли завдання використовує трейт Trackable, воно автоматично створює запис у базі даних під час виконання. Ви можете отримати статус завдання, використовуючи метод getJobStatusId():

use DispatchesJobs;
 
$job = new TrackableJob([]);
$this->dispatch($job);
 
$jobStatusId = $job->getJobStatusId();
$jobStatus = JobStatus::find($jobStatusId);
 
// Властивості моделі
$jobStatus->job_id
$jobStatus->type
$jobStatus->queue
$jobStatus->status
$jobStatus->attempts
$jobStatus->progress_now
$jobStatus->progress_max
$jobStatus->input
$jobStatus->output
$jobStatus->created_at
$jobStatus->updated_at
$jobStatus->started_at
$jobStatus->finished_at

# Основні функції

Детальніше можна дізнатися на GitHub-сторінці laravel-job-status.