Web Doktoru - 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.
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.
cron job tanımlamak yerine, tüm işleri Laravel üzerinden yönetebilirsiniz.app/Console/Kernel.php) yönetilir.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.
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.
Laravel Scheduler, çeşitli zamanlama seçenekleri sunar. İşte en yaygın kullanılanlar:
->everyMinute()->hourly()->daily()->weekly()->monthly()->dailyAt('14:00')->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');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.
Sunucunuzda crontab dosyasını düzenlemek için aşağıdaki komutu kullanın:
crontab -eArdından, aşağıdaki satırı ekleyin:
* * * * * php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1Bu komut, her dakika Laravel Scheduler’ı çalıştırır ve zamanlanmış görevleri kontrol eder.
Cron job’un doğru çalıştığını test etmek için aşağıdaki komutu kullanabilirsiniz:
php artisan schedule:runBu komut, zamanlanmış görevleri manuel olarak çalıştırır ve hataları kontrol etmenizi sağlar.
Laravel Scheduler, performansı artırmak için birçok özellik sunar. İşte en iyi uygulamalardan bazıları:
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();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();Zamanlanmış görevlerin sonuçlarını e-posta ile bildirmek için ->emailOutputTo() metodunu kullanabilirsiniz.
$schedule->command('backup:run')->daily()->emailOutputTo('admin@example.com');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.
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');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();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. 🚀
Web trafiğinin %70'inden fazlası artık mobil cihazlardan geliyor. Google'ın mobil öncelikli indekslemesi (mobile-first indexing) 2026'da tam bir…
WordPress siteniz canlıya alındıktan sonra iş bitmiyor asıl iş o zaman başlıyor. Pek çok işletme…
İşletmeniz için dijital bir çözüm geliştirmek istediğinizde, karşılaşacağınız ilk soru genellikle budur: "Mobil uygulama mı…
Web sitesi hızı, 2026'da sadece bir teknik detay değil — doğrudan iş sonuçlarını etkileyen kritik…
Sosyal medya, 2026 itibarıyla 5.2 milyar aktif kullanıcıya ulaşmış durumda. Türkiye'de ise 65 milyondan fazla…
"İç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,…