Пакет 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.