Zaman alan görevleri asenkron olarak yönetmek için kuyruğa alınabilir iş.
<?php
namespace App\Jobs;
use App\Mail\WelcomeEmail;
use App\Models\User;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Mail;
class SendWelcomeEmail implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public int 400">$tries = 3;
public int 400">$backoff = 60;
public function __construct(public User 400">$user) {}
public function handle(): void
{
Mail::to(400">$this->user->email)->send(new WelcomeEmail(400">$this->user));
}
public function failed(\Throwable 400">$exception): void
{
logger()->error(class=class="text-emerald-400">"text-emerald-400">'Welcome email failed', [
class=class="text-emerald-400">"text-emerald-400">'user' => 400">$this->user->id,
class=class="text-emerald-400">"text-emerald-400">'error' => 400">$exception->getMessage(),
]);
}
}
class=class="text-emerald-400">"text-gray">// Dispatch: SendWelcomeEmail::dispatch(400">$user);
class=class="text-emerald-400">"text-gray">// Delayed: SendWelcomeEmail::dispatch(400">$user)->delay(now()->addMinutes(5));Şu komutla oluşturun: php artisan make:job SendWelcomeEmail. Controller'lardan veya event'lerden dispatch edin: SendWelcomeEmail::dispatch($user). İşler php artisan queue:work ile arka planda çalışır. Otomatik yeniden deneme için tries ve backoff kullanın.
Fikrinizi nasıl hayata geçirebileceğimizi konuşalım. İlk konseptten üretime hazır ürüne kadar — yanınızdayız.