Web Doktoru - Laravel’de Queue (Kuyruk) Kullanımı ve Arka Plan İşlemleri
Laravel’de Queue (Kuyruk) Kullanımı ve Arka Plan İşlemleri
Laravel’de Queue (kuyruk) sistemi, uzun süren işlemleri arka planda çalıştırarak kullanıcı deneyimini iyileştirir ve performansı artırır.
Bu yazıda queue kullanımı, job oluşturma ve farklı kuyruk sürücülerinin nasıl kullanılacağını inceleyeceğiz.
Queue, yoğun işlem gerektiren işleri eşzamanlı yerine, arka planda çalıştırmak için kullanılır.
🛠 Örneğin:
✅ E-posta gönderme (Kullanıcı kayıt olduğunda)
✅ API ile veri alışverişi (Harici servislerden veri çekme)
✅ Büyük dosya işleme (Resim, PDF veya video işleme)
✅ Bildirim gönderme (SMS veya push bildirimler)
Laravel’de varsayılan queue sürücüsü sync olarak gelir. Bunu .env dosyasında değiştirebiliriz:
QUEUE_CONNECTION=databaseDesteklenen Queue Sürücüleri:
sync → İşleri anında çalıştırır (kuyruk olmadan).database → Verileri veritabanında kuyruklar.redis → Redis ile yüksek performanslı kuyruk işlemi yapar.sqs → AWS SQS kullanır.✅ Veritabanı sürücüsünü kullanmak için migration oluştur:
php artisan queue:table
php artisan migrateBir job (arka plan görevi) oluşturmak için:
php artisan make:job SendEmailJob📌 app/Jobs/SendEmailJob.php dosyasına giderek handle() metodunu düzenleyelim:
namespace App\Jobs;
use Mail;
use App\Mail\WelcomeMail;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
class SendEmailJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
protected $user;
public function __construct($user)
{
$this->user = $user;
}
public function handle()
{
Mail::to($this->user->email)->send(new WelcomeMail($this->user));
}
}
Şimdi, kullanıcı kayıt olduğunda e-posta göndermek için job’ı dispatch (kuyruğa ekleme) edelim:
use App\Jobs\SendEmailJob;
$user = User::find(1); // Kullanıcıyı bul
dispatch(new SendEmailJob($user)); // Kuyruğa ekleEğer işin belli bir süre sonra çalışmasını istiyorsak:
dispatch(new SendEmailJob($user))->delay(now()->addMinutes(5));Kuyruğa eklenen işleri çalıştırmak için şu komutu kullan:
php artisan queue:workSürekli çalışan bir kuyruk işçisi başlatmak için:
php artisan queue:work --daemonNot: Production ortamında supervisor ile kuyruk işçisini yönetmek gerekir.
Redis, Laravel’de en iyi queue sürücülerinden biridir. Redis ile queue kullanımı için:
📌 Redis yükleyelim:
sudo apt install redis📌 .env dosyasında ayarları güncelle:
QUEUE_CONNECTION=redis📌 Kuyruk işlerini çalıştır:
php artisan queue:work redis✅ Kuyruğu temizleme:
php artisan queue:flush✅ Belirli bir job’ı tekrar kuyruğa ekleme:
php artisan queue:retry all✅ Belirli job’ları silme:
php artisan queue:forget job_idBu yazıda Laravel’de queue kullanımını, job oluşturmayı, veritabanı ve Redis ile kuyruk işlemlerini öğrendik. Umarız faydalı olmuştur. Sonraki makalemiz Laravel’de Event & Listener Kullanımı üzerine olacak.
Wordpress ile ilgilenmeye başlamışsanız ve aklınızda güvenliği nasıl sağlayacağınız varsa, bu eklentimiz tam aradığınız türden.…
Dijital pazarlama stratejilerinde başarılı olmak için SEO (Arama Motoru Optimizasyonu), GEO (Coğrafi Optimizasyon) ve AEO…
Günümüzde bir web sitesi sahibi olmak, hem bireyler hem de işletmeler için oldukça önemli hale…
Web Sunucusu Nedir? Web sunucusu, kullanıcıların internet üzerinden bir web sayfasına erişmesini sağlayan güçlü bir…
İçerik oluşturmak kolaydır. Özellikle son zamanlarda gelişen yapay zeka sayesinde. Ancak insanların hatırladığı marka içeriği…
Perfex CRM, hızlı kurulumu ve sade arayüzüyle Türkiye’de giderek daha fazla tercih edilen, Codeigniter altyapısı…