Belirli zamanlarda otomatik çalışan görevlerin yöneticisi
Her gün, her saat veya her dakika otomatik olarak çalışması gereken zamanlanmış görevler tanımladık. Backup alma, cache temizleme, rapor oluşturma gibi işler artık insan müdahalesi olmadan çalışıyor.
Günlük, saatlik ve dakikalık görevler
İnsan müdahalesi gerekmiyor
Her gece 03:00'te veritabanı yedeği
Her saat başı gereksiz cache silinir
Laravel Scheduler her dakika çalışır ve şu süreci işletir:
Sunucu crontab'da * * * * * php artisan schedule:run her dakika çalışır. Bu tek cron, Laravel'in tüm zamanlamalarını yönetir.
Kernel::schedule() metodundaki tüm görevler kontrol edilir. ->daily(), ->hourly(), ->everyFiveMinutes() gibi cron expression'lar değerlendirilir.
Her görev için isDue() metodu çağrılır. Şu anki dakika cron expression'a uyuyorsa true döner. ->when() koşulları da kontrol edilir.
->withoutOverlapping() varsa mutex lock kontrol edilir. Cache::lock('schedule-mutex-backup') ile önceki instance hala çalışıyorsa atlanır.
Görev çalışır: Artisan::call('backup:run') veya exec('php artisan ...'). ->runInBackground() varsa subprocess olarak başlatılır.
->after() callback'leri çalışır. ->onSuccess() veya ->onFailure() ile bildirim gönderilir. schedule_run_logs tablosuna kayıt yazılır.
Tüm zamanlanmış görevler ve zamanları
Hangi görev ne zaman çalıştı
Başarısız görev denemeleri
Her görev için sonraki çalıştırma zamanı
Görevleri belirli zamanlarda çalıştıran sistem
Sunucuda zamanlama yapan temel araç
Laravel'in komut satırı aracı
Veritabanı ve dosyaların yedeklenmesi