Laravel
Beginner
1 min read
Introduction to Laravel Queues and Jobs
Example
<?php
// Generate a job: php artisan make:job ProcessPodcast
// app/Jobs/ProcessPodcast.php
namespace App\Jobs;
use App\Models\Podcast;
use App\Services\AudioProcessor;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
class ProcessPodcast implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public int $tries = 3;
public int $timeout = 120;
public function __construct(
public readonly Podcast $podcast
) {}
public function handle(AudioProcessor $processor): void
{
$processor->transcode($this->podcast->file_path);
$this->podcast->update(['processed' => true]);
}
public function failed(\Throwable $e): void
{
// Notify developer or mark podcast as failed
\Log::error('Podcast processing failed: ' . $e->getMessage());
}
}
// Dispatch from a controller:
// ProcessPodcast::dispatch($podcast);
// ProcessPodcast::dispatch($podcast)->onQueue('audio')->delay(now()->addMinutes(5));
Related Resources
Laravel Reference
Complete tag & property list
Laravel How-To Guides
Step-by-step practical guides
Laravel Exercises
Practice what you've learned
More in Laravel