Cron Nedir? Zamanlanmış Görevler, Cron İfadesi Yazımı ve Paylaşımlı Hostingde Tembel Cron Rehberi
Cron, Linux sunucularda belirli zamanlarda komut veya betik çalıştıran zamanlayıcı servisidir; web projelerinde yedek alma, veri çekme, önbellek temizleme ve bildirim gönderme gibi tekrarlayan işler cron ile yapılır. Cron kullanılamayan paylaşımlı hostinglerde ise tembel cron adı verilen yöntemle aynı işler site ziyaretleri üzerinden tetiklenir. Bu yazıda cron ifadesinin nasıl yazıldığını, Plesk ve cPanel üzerinde kurulumu ve tembel cron mantığını PHP örnekleriyle anlatıyoruz.
Cron Nasıl Çalışır?
Sunucuda arka planda çalışan cron servisi her dakika crontab adlı görev listesine bakar. Listedeki her satır bir zaman deseni ve bir komuttan oluşur. Zaman deseni o dakikaya uyuyorsa komut çalıştırılır. Cron komutun sonucuyla ilgilenmez; hata olursa yalnızca e-posta ile bildirir ya da hiç haber vermez. Bu yüzden her cron görevinin kendi günlüğünü tutması gerekir.
Cron İfadesi Nasıl Yazılır?
Bir cron ifadesi beş alandan oluşur: dakika, saat, ayın günü, ay ve haftanın günü. Yıldız işareti her değer anlamına gelir.
- 0 3 * * * her gece saat 03:00
- */15 * * * * her 15 dakikada bir
- 0 9 * * 1 her pazartesi 09:00
- 30 6 1 * * her ayın birinde 06:30
- 0 */2 * * * iki saatte bir, tam saatte
Sunucunun saat dilimini kontrol etmeyi unutmayın; çoğu sunucu UTC ile çalışır ve Türkiye saati üç saat ileridedir. İfadeyi denemek için crontab.guru gibi araçlar işe yarar.
Plesk ve cPanel Üzerinde Cron Kurulumu
- Plesk: Araçlar ve Ayarlar, Zamanlanmış Görevler yolunu açın. Görev ekle deyin, çalıştırılacak komut olarak PHP betiği seçip dosya yolunu yazın, zaman desenini girin.
- cPanel: Gelişmiş bölümünde Cron İşleri seçin. Ortak ayarlardan aralığı belirleyin, komut alanına php ve betik yolunu yazın.
- Her iki panelde de komutun sonuna bir günlük dosyasına yönlendirme ekleyin; böylece çıktı kaybolmaz.
Web üzerinden erişilebilen bir betiği cron ile çalıştırıyorsanız betiğin başında gizli bir anahtar kontrolü yapın; aksi halde herkes tarayıcıdan tetikleyebilir.
Tembel Cron Nedir?
Tembel cron, gerçek cron olmayan ortamlarda zamanlanmış işi normal site trafiğine bağlama yöntemidir. Mantık şudur: Her sayfa isteğinde küçük bir kontrol çalışır, son çalışma zamanına bakar, belirlenen aralık geçmişse görevi yapar ve zamanı günceller. Site hiç ziyaret edilmezse görev de çalışmaz; bu, çoğu küçük proje için kabul edilebilir bir ödündür.
- SQLite tablosunda veya küçük bir dosyada son çalışma zamanını tutun.
- Sayfa yüklenirken bu zamanı okuyun; aralık dolmadıysa hiçbir şey yapmayın.
- Aralık dolduysa önce kilit dosyası oluşturun; aynı anda gelen iki istek işi iki kez yapmasın.
- Görevi çalıştırın, zamanı güncelleyin, kilidi kaldırın.
- Görev uzun sürecekse yanıtı kullanıcıya gönderdikten sonra arka planda devam edecek şekilde tasarlayın; ziyaretçi beklemesin.
Hangi Durumda Hangisi?
- VPS veya cron izni olan hosting: Gerçek cron, her zaman.
- Cron izni olmayan ucuz paylaşımlı hosting: Tembel cron.
- Görevin dakikası kritikse (fatura kesimi, SMS gönderimi): Gerçek cron veya harici tetikleyici servis.
- Günde birkaç kez çalışması yeterli, saat önemli değilse: Tembel cron rahatça yeter.
Sık Yapılan Hatalar
- Betikte göreli dosya yolu kullanmak; cron farklı klasörden çalışır, mutlak yol yazın.
- PHP sürümünü belirtmemek; panel sürümü ile komut satırı sürümü farklı olabilir.
- Uzun süren görevi dakikada bir çalıştırmak; önceki bitmeden yenisi başlar, sunucu tıkanır.
- Hata çıktısını yok saymak; en azından bir dosyaya yazdırın.
- Gerçek cron ile tembel cronu aynı anda kullanmak; iş iki kez yapılır.
Saha Notu
Kendi yazdığım Nabız adlı site izleme aracı, her dakika onlarca adresi kontrol ediyor ve bunun için gerçek cron şart. Buna karşılık yerel haber sitesi için yazdığım API besleme betiği tembel cron ile çalışıyor; site zaten dakikada birkaç ziyaret aldığı için 20 dakikalık aralık hiç aksamadı. Bir keresinde kilit dosyası koymadığım için aynı haberi üç kez çeken bir hata yaşadım; o günden beri tembel cron kurarken ilk yazdığım satır kilit kontrolü oluyor. Kural basit: Dakika hassasiyeti gerekiyorsa cron, gerekmiyorsa tembel cron yeterli ve daha az dertli.
Sık Sorulan Sorular
Cron görevi çalışıp çalışmadığını nasıl anlarım?
Betiğin başında tarih saatli bir satırı günlük dosyasına yazdırın; dosya büyüyorsa görev çalışıyordur.
Windows sunucuda cron var mı?
Cron yerine Görev Zamanlayıcı kullanılır; mantık aynıdır.
Tembel cron sitemi yavaşlatır mı?
Kontrol adımı birkaç milisaniye sürer. Görevin kendisini arka plana atarsanız ziyaretçi hiçbir gecikme hissetmez.
Ücretsiz harici cron servisi kullanmak güvenli mi?
Betiğinizi gizli anahtarla korursanız evet; ancak servis kapanırsa görevler durur, yedek plan tutun.
Cron ifadesinde saniye ayarı yapılabilir mi?
Klasik cron dakika hassasiyetindedir. Saniyelik işler için betik içinde bekleme döngüsü veya ayrı bir servis gerekir.
Özet
Cron, sunucuda tekrarlayan işleri belirli zamanlarda otomatik çalıştıran temel araçtır; beş alanlı ifadeyle dakika, saat, gün, ay ve hafta günü belirlenir, Plesk ve cPanel üzerinden birkaç tıkla kurulur. Cron izni olmayan paylaşımlı hostinglerde tembel cron, aynı işi sayfa ziyaretleri üzerinden kilit ve zaman damgası mantığıyla yürütür. Mutlak yol, günlük dosyası ve kilit kontrolü her iki yöntemde de sorunsuz çalışmanın anahtarıdır.











Yorumlar
Henuz yorum yok. Ilk yorumu siz yazin.
Yorum Yap