WordPress zamanlanmış görevler neden çalışmıyor: WP-Cron vs sistem cron

WordPress'te yinelenen görevler, yenileme e-postaları, otomatik içeri aktarmalar, temizlik işlemleri, birden bire sessizce durabilir. Hiç hata mesajı yok, hiç log kaydı yok. Sadece beklediğin şey çalışmıyor. Bunun sebebi çoğu zaman WP-Cron'un nasıl çalıştığını yanlış anlamaktan kaynaklanıyor.

WP-Cron gerçek bir zamanlayıcı değil. Bir "kontrol mekanizması". WordPress her sayfa yüklemesinde cron seçeneğine bakıyor, süresi geçmiş olan olayları buluyor ve bunları çalıştırmak için wp-cron.php'ye bir arka plan isteği gönderiyor. Trafiğin olmadığı bir site? O zaman cron görevleri de çalışmıyor. Yalnızca bir ziyaretçi siteni ziyaret ettiğinde tetiklenir.

Bu da başarısızlığın tüm hikayesini açıklıyor. Hiçbir şey "başarısız" olmadığı için log'ta hiçbir şey görünmüyor.

Sorunları teşhis etmek için önce hangi görevlerin gecikmeli olduğunu kontrol et. WP-CLI kullanıyorsan bu komutu çalıştır:

Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası
wp cron event list --fields=hook,next_run_gmt,recurrence,args

Önemli: next_run_gmt UTC'de gösterilir. Bunu sitenin saat dilimi ayarıyla değil, UTC saat ile karşılaştır: `date -u`. Eğer bir görev UTC'de saatler kadar geçmişte ise, o görev gecikmiş demektir.

Eğer beklediğin görev listede yoksa, o hiç planlanmamış demektir. Bunun sebebi eklentinin devre dışı olması, zamanlama kodunun sadece admin panelinde çalışması veya birinin `wp_clear_scheduled_hook()` çağırması olabilir.

WP-Cron'u sistem cron'u ile değiştirmek (DISABLE_WP_CRON ayarını true yapıp gerçek bir cron işi eklemek) sorunun kökünü çözer. Böylece trafiğe bağlı kalmadan görevler düzenli olarak çalışır. Düşük trafikli sitelerde bu fark hayat kurtarıcı olur.

Reklam · TEST
AdSense Test ReklamıGönderi altı · Görüntülü
konu hakkında tepkinizi verebilirsiniz