Performance: Creating jobs
This affects how background tasks are handled, impacting page responsiveness and server load during user interactions.
Jump into concepts and practice - no test required
<?php
// Controller method
public function sendEmail(Request $request) {
SendEmailJob::dispatch($request->user());
return response()->json(['status' => 'Email queued']);
}
// Job class
use IlluminateContractsQueueShouldQueue;
class SendEmailJob implements ShouldQueue {
protected User $user;
public function __construct(User $user) {
$this->user = $user;
}
public function handle() {
Mail::to($this->user)->send(new WelcomeEmail());
}
}<?php
// Controller method
public function sendEmail(Request $request) {
Mail::to($request->user())->send(new WelcomeEmail());
return response()->json(['status' => 'Email sent']);
}| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Synchronous heavy task in controller | Minimal | 0 | 0 | [X] Bad |
| Queued job for heavy task | Minimal | 0 | 0 | [OK] Good |
php artisan make:job JobName.dispatch(new SendEmail()) is called?class SendEmail implements ShouldQueue {
public function handle() {
Mail::to('user@example.com')->send(new WelcomeMail());
}
}class ProcessData {
public function handle() {
// process data here
}
}php artisan make:job ProcessUploadhandle()ProcessUpload::dispatch()ShouldQueue interface if you want it queued