What is a Job?
A Job is the task you want to perform.
app/
└── Jobs/
└── SendWelcomeEmail.phpExamples:
- Send Email
- Send SMS
- Generate PDF
- Upload Image
What is a Queue?
A Queue stores the job and executes it later in the background.
- Job = The work (task).
- Queue = A waiting line for jobs.
Example: Send Welcome Email:
Step 1: Create a Job:
php artisan make:job SendWelcomeEmailStep 2: Job File:
app/Jobs/SendWelcomeEmail.php
class SendWelcomeEmail
{
public function handle()
{
echo "Welcome Email Sent";
}
}handle() contains the work to perform.
Step 3: Dispatch the Job:
UserController.php
use App\Jobs\SendWelcomeEmail;
public function register()
{
// Save user
SendWelcomeEmail::dispatch();
return "User Registered";
}dispatch() sends the job to the queue.
// After 30 seconds
SendWelcomeEmail::dispatch()->delay(now()->addSeconds(30));
// After 1 minute
SendWelcomeEmail::dispatch()->delay(now()->addMinute());
// After 5 minutes
SendWelcomeEmail::dispatch()->delay(now()->addMinutes(5));
// After 1 hour
SendWelcomeEmail::dispatch()->delay(now()->addHour());Step 4: Run Queue Worker
php artisan queue:work- User registers.
- Wait 5 minutes.
- Send a welcome email.