Laravel'de Oturum Temizliğini Zamanlanmış Komutla Otomatikleştir
Laravel uygulamalarında veritabanı veya dosya sisteminde depolanan oturumlar zamanla birikir. Varsayılan olarak Laravel, web isteklerinin içinde rastgele bir temizlik işlemi (session lottery) çalıştırır ve süresi dolmuş oturumları siler. Ancak bu yöntem performans açısından ideal değildir; istek sırasında beklenmedik bir yavaşlama yaratabilir.
Daha iyi bir yaklaşım, temizlik işlemini zamanlanmış bir komutla ayrı bir görev olarak çalıştırmaktır. Laravel'in scheduler'ını kullanarak bunu kolayca ayarlayabilirsin.
İlk olarak, `app/Console/Kernel.php` dosyasında schedule metoduna git ve şu satırı ekle:
1protected function schedule(Schedule $schedule)2{3$schedule->command('session:garbage-collect')->everyFiveMinutes();4}[/kod]56Bu komut, her beş dakikada bir süresi dolmuş oturumları temizler. Sıklığı ihtiyacına göre ayarlayabilirsin; `everyMinute()`, `hourly()`, `daily()` gibi seçenekler var.78Sonra, session lottery'i kapatman gerekir. Bunu `config/session.php` dosyasında yaparsın:910[kod]11'lottery' => [0, 0],Lottery değerini `[0, 0]` olarak ayarlamak, rastgele temizliği tamamen devre dışı bırakır. Artık sadece scheduler aracılığıyla temizlik yapılacak.
Scheduler'ın çalışması için sunucunda cron job'u ayarlamalısın:
* cd /path/to/laravel && php artisan schedule:run >> /dev/null 2>&1Bu cron, her dakika Laravel'in scheduler'ını çalıştırır ve zamanı gelmiş görevleri execute eder.
Bu yaklaşım, web isteklerinin hızını etkilemez ve oturumları düzenli olarak temizler. Özellikle yüksek trafikli uygulamalarda performans farkı belirgin olur.
0 yorum