Laravel

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.


1️⃣ Queue (Kuyruk) Nedir ve Neden Kullanılır?

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)


2️⃣ Laravel’de Queue Kullanımı

📌 a) Queue Kurulumu ve Yapılandırma

Laravel’de varsayılan queue sürücüsü sync olarak gelir. Bunu .env dosyasında değiştirebiliriz:

QUEUE_CONNECTION=database

Desteklenen 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 migrate

📌 b) Kuyruğa Gönderilecek Job (Görev) Oluşturma

Bir 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));
    }
}

📌 c) Job’ı Kuyruğa Gönderme

Ş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 ekle

Eğer işin belli bir süre sonra çalışmasını istiyorsak:

dispatch(new SendEmailJob($user))->delay(now()->addMinutes(5));

📌 d) Queue Worker Çalıştırma

Kuyruğa eklenen işleri çalıştırmak için şu komutu kullan:

php artisan queue:work

Sürekli çalışan bir kuyruk işçisi başlatmak için:

php artisan queue:work --daemon

Not: Production ortamında supervisor ile kuyruk işçisini yönetmek gerekir.


3️⃣ Redis ile Queue Kullanımı (Performans İçin)

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

4️⃣ Queue İşlemlerini Yönetme

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_id

Sonuç

Bu 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.

Web Doktoru

Matematikçi, Adli Bilişim Uzmanı, Bil. Yük. Müh. Full Stack Developer

Son Gönderiler

Mobil Uyumlu Web Tasarım Rehberi: Responsive Design ile Kullanıcı Deneyimini Mükemmelleştirin

Web trafiğinin %70'inden fazlası artık mobil cihazlardan geliyor. Google'ın mobil öncelikli indekslemesi (mobile-first indexing) 2026'da tam bir…

9 Haziran 2026

WordPress Bakım Hizmeti Neden Gerekli? Site Sahiplerinin Yapmaması Gereken 8 Hata

WordPress siteniz canlıya alındıktan sonra iş bitmiyor asıl iş o zaman başlıyor. Pek çok işletme…

5 Haziran 2026

Mobil Uygulama mı Web Uygulaması mı? İşletmeniz İçin Doğru Tercih Rehberi

İşletmeniz için dijital bir çözüm geliştirmek istediğinizde, karşılaşacağınız ilk soru genellikle budur: "Mobil uygulama mı…

3 Haziran 2026

WordPress Site Hız ve Performans Optimizasyonu: Sayfa Yüklenme Süresini 3 Saniyenin Altına İndirin

Web sitesi hızı, 2026'da sadece bir teknik detay değil — doğrudan iş sonuçlarını etkileyen kritik…

1 Haziran 2026

Sosyal Medya Pazarlama Rehberi 2026: Platformlara Göre Strateji ve Büyüme Taktikleri

Sosyal medya, 2026 itibarıyla 5.2 milyar aktif kullanıcıya ulaşmış durumda. Türkiye'de ise 65 milyondan fazla…

29 Mayıs 2026

İçerik Pazarlama Stratejileri 2026: Dönüşüm Oranını Artıran 10 Adım

"İçerik kraldır" diyerek başlamak bu noktada klasik kaçabilir ama gerçek değişmiyor: doğru içerik, doğru kişilere,…

27 Mayıs 2026