Laravel

Laravel’de Scheduler (Zamanlanmış Görevler) Kullanımı: Otomatik İşlemler ve Zaman Yönetimi

Laravel’de Scheduler (Zamanlanmış Görevler) Kullanımı: Otomatik İşlemler ve Zaman Yönetimi

Laravel, modern web uygulamalarında belirli işlemleri otomatik olarak zamanlamak ve yönetmek için güçlü bir Scheduler (Zamanlayıcı) özelliği sunar. Bu özellik, geliştiricilere tek bir noktadan tüm zamanlanmış görevleri yönetme imkanı verir ve sunucu üzerinde birden fazla cron job tanımlama ihtiyacını ortadan kaldırır. Bu makalede, Laravel Scheduler’ın ne olduğunu, nasıl kullanılacağını ve performans optimizasyonu için en iyi uygulamaları ele alacağız.


1️⃣ Scheduler (Zamanlayıcı) Nedir ve Neden Kullanılır?

Scheduler, Laravel’de belirli işlemleri otomatik olarak belirli zaman aralıklarında çalıştırmak için kullanılan bir mekanizmadır. Bu mekanizma, cron job tabanlı çalışır ve geliştiricilere zamanlanmış görevleri kolayca yönetme imkanı sunar.

Scheduler’ın Avantajları:

  • Otomatik Görev Yönetimi: Günlük yedekleme, e-posta gönderme, veri temizleme gibi işlemleri otomatikleştirir.
  • Kod Tekrarını Azaltır: Her görev için ayrı ayrı cron job tanımlamak yerine, tüm işleri Laravel üzerinden yönetebilirsiniz.
  • Esneklik: Zamanlama aralıklarını Laravel içinde kolayca değiştirebilirsiniz.
  • Merkezi Yönetim: Tüm zamanlanmış görevler tek bir dosyada (app/Console/Kernel.php) yönetilir.

2️⃣ Scheduler Kullanımı

Laravel’de zamanlanmış görevler, app/Console/Kernel.php dosyasında tanımlanır. Bu dosya, tüm zamanlanmış görevlerin yönetildiği merkezi bir noktadır.

a) Zamanlanmış Görev Oluşturma

Zamanlanmış görevler, schedule() metodu içinde tanımlanır. Örneğin, her gün saat 02:00’de veritabanı yedeği almak için aşağıdaki gibi bir görev tanımlayabilirsiniz:

protected function schedule(Schedule $schedule)
{
    $schedule->command('backup:run')->daily()->at('02:00');
}

Bu kod, her gün saat 02:00’de backup:run komutunu çalıştırarak veritabanı yedeği alır.

b) Zamanlama Seçenekleri

Laravel Scheduler, çeşitli zamanlama seçenekleri sunar. İşte en yaygın kullanılanlar:

  • Her Dakika: ->everyMinute()
  • Her Saat: ->hourly()
  • Günlük: ->daily()
  • Haftalık: ->weekly()
  • Aylık: ->monthly()
  • Belirli Bir Saatte: ->dailyAt('14:00')
  • Belirli Günlerde: ->mondays()->at('08:00')

Örneğin, her Pazartesi sabah 08:00’de bir rapor oluşturmak için:

$schedule->command('generate:report')->mondays()->at('08:00');

3️⃣ Laravel Scheduler’ı Çalıştırma (Cron Job Tanımlama)

Laravel Scheduler’ın çalışması için sunucuda sadece tek bir cron job tanımlamanız yeterlidir. Bu cron job, Laravel’in zamanlanmış görevlerini çalıştırmak için kullanılır.

a) Cron Job Tanımlama

Sunucunuzda crontab dosyasını düzenlemek için aşağıdaki komutu kullanın:

crontab -e

Ardından, aşağıdaki satırı ekleyin:

* * * * * php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1

Bu komut, her dakika Laravel Scheduler’ı çalıştırır ve zamanlanmış görevleri kontrol eder.

b) Cron Job’u Test Etme

Cron job’un doğru çalıştığını test etmek için aşağıdaki komutu kullanabilirsiniz:

php artisan schedule:run

Bu komut, zamanlanmış görevleri manuel olarak çalıştırır ve hataları kontrol etmenizi sağlar.


4️⃣ Scheduler ile Performans Optimizasyonu

Laravel Scheduler, performansı artırmak için birçok özellik sunar. İşte en iyi uygulamalardan bazıları:

a) Görevleri Arka Planda Çalıştırma

Zamanlanmış görevleri arka planda çalıştırmak için ->runInBackground() metodunu kullanabilirsiniz. Bu, görevlerin daha hızlı tamamlanmasını sağlar.

$schedule->command('backup:run')->daily()->at('02:00')->runInBackground();

b) Görevleri Paralel Çalıştırma

Birden fazla görevi paralel olarak çalıştırmak için ->withoutOverlapping() metodunu kullanabilirsiniz. Bu, aynı görevin birden fazla kez çalışmasını engeller.

$schedule->command('process:data')->hourly()->withoutOverlapping();

c) Görevleri E-posta ile Bildirme

Zamanlanmış görevlerin sonuçlarını e-posta ile bildirmek için ->emailOutputTo() metodunu kullanabilirsiniz.

$schedule->command('backup:run')->daily()->emailOutputTo('admin@example.com');

5️⃣ Scheduler ile İlgili Diğer Konular

a) Görevleri Test Etme

Zamanlanmış görevleri test etmek için php artisan schedule:run komutunu kullanabilirsiniz. Bu komut, görevleri manuel olarak çalıştırır ve hataları kontrol etmenizi sağlar.

b) Görevleri Günlüğe Kaydetme

Zamanlanmış görevlerin çıktılarını günlüğe kaydetmek için ->appendOutputTo() veya ->sendOutputTo() metodlarını kullanabilirsiniz.

$schedule->command('backup:run')->daily()->appendOutputTo('/path/to/logfile.log');

c) Görevleri Önceliklendirme

Zamanlanmış görevleri önceliklendirmek için ->onOneServer() metodunu kullanabilirsiniz. Bu, birden fazla sunucu kullanıyorsanız görevlerin sadece bir sunucuda çalışmasını sağlar.

$schedule->command('backup:run')->daily()->onOneServer();

6️⃣ Sonuç

Laravel’in Scheduler (Zamanlayıcı) özelliği, otomatik görevleri yönetmek ve uygulamanızın performansını artırmak için güçlü bir araçtır. Bu makalede, Laravel Scheduler’ın nasıl kullanılacağını, zamanlanmış görevlerin nasıl oluşturulacağını ve performans optimizasyonu için en iyi uygulamaları öğrendiniz.

Eğer Laravel ile web uygulamaları geliştiriyorsanız, Scheduler’ı kullanarak otomatik görevleri kolayca yönetebilir ve uygulamanızın verimliliğini artırabilirsiniz. 🚀


Ek Konu Başlıkları:

  • Görevleri Özelleştirme: Özel zamanlama aralıkları ve koşullar.
  • Görevleri İzleme: Zamanlanmış görevlerin durumunu izleme ve raporlama.
  • Görevleri Önceliklendirme: Birden fazla sunucuda görevleri önceliklendirme.
  • Görevleri Test Etme: Zamanlanmış görevleri test etme ve hata ayıklama yöntemleri.

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