WordPress, yazılım ve IT üzerine notlar
Anasayfa » WordPress » WP-Cron neden güvenilmez ve gerçek cron'a nasıl taşınır?

WP-Cron neden güvenilmez ve gerçek cron'a nasıl taşınır?

İçindekiler
  1. WP-Cron nasıl çalışır?
  2. Gerçek cron'a geçiş
  3. Kaç dakikada bir?
  4. Çoklu site (multisite) notu

WordPress'te "cron" denince çoğu kişi sunucudaki gerçek zamanlayıcıyı düşünür. Oysa WP-Cron bir zamanlayıcı değildir. Ziyaretçi geldiğinde çalışan bir kontroldür.

WP-Cron nasıl çalışır?

Her sayfa yüklemesinde WordPress, zamanı gelmiş bir görev olup olmadığına bakar. Varsa arka planda wp-cron.php dosyasına bir istek gönderir ve görevleri o istek çalıştırır. Bu yaklaşım, cron'a erişimi olmayan paylaşımlı hostinglerde bile çalışsın diye seçilmiş.

Bedeli şu iki durumda ortaya çıkar:

  1. Az ziyaretçili site: Gece 03:00'te ziyaretçi yoksa, 03:00'e zamanlanmış yedek de çalışmaz. Sabah ilk gelen ziyaretçiyle çalışır. Zamanlanmış yazılar "Zamanlama kaçırıldı" uyarısı verir.
  2. Çok ziyaretçili site: Her ziyarette yapılan bu kontrol ve aynı anda tetiklenen wp-cron.php istekleri gereksiz yük oluşturur. Ağır bir görev ziyaretçinin sayfasını yavaşlatabilir.

Ek olarak, sunucunun kendine HTTP isteği atamadığı durumlarda (güvenlik duvarı, yanlış DNS, HTTP kimlik doğrulaması) WP-Cron hiç çalışmaz.

Gerçek cron'a geçiş

Adım 1: WP-Cron'un sayfa yüklemesinde tetiklenmesini kapatın

wp-config.php içinde, "stop editing" satırının üstüne:

define( 'DISABLE_WP_CRON', true );

Bu satır görevleri iptal etmez. Yalnızca ziyaretçi isteklerinin onları tetiklemesini durdurur.

Adım 2: Sunucuya bir cron görevi ekleyin

En sağlıklı yöntem WP-CLI'dir, çünkü HTTP katmanına hiç uğramaz:

*/5 * * * * cd /home/kullanici/public_html && /usr/local/bin/wp cron event run --due-now --quiet

WP-CLI yoksa PHP ile doğrudan çalıştırabilirsiniz:

*/5 * * * * cd /home/kullanici/public_html && /usr/bin/php wp-cron.php >/dev/null 2>&1

Panelinizde yalnızca URL çağırma imkânı varsa son çare olarak:

*/5 * * * * curl -s https://ornek.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1

Görevi sitenin dosya sahibiyle çalıştırın, root ile değil. Aksi hâlde cron'un oluşturduğu dosyalar root'a ait olur ve WordPress daha sonra onlara yazamaz.

Adım 3: Doğrulayın

wp cron event list

Bu komut zamanı gelen görevleri ve bir sonraki çalışma zamanlarını gösterir. Beş dakika bekleyip tekrar baktığınızda "next run" sütunu ilerlemiş olmalı. WP-CLI yoksa WP Crontrol gibi bir eklentiyle panelden aynı listeyi görebilirsiniz.

Kaç dakikada bir?

Çoğu site için 5 dakika idealdir. E-posta kuyruğu ya da stok senkronizasyonu gibi sık işleri olan e-ticaret sitelerinde 1 dakika kullanılabilir. 15 dakikadan seyrek bir aralık ise zamanlanmış yazıların gecikmesine yol açar.

Çoklu site (multisite) notu

Multisite kurulumlarda her alt sitenin kendi görev listesi vardır. Tek bir cron satırı yalnızca ana siteyi çalıştırır. Tüm siteler için:

*/5 * * * * cd /yol && for u in $(wp site list --field=url); do wp cron event run --due-now --url="$u" --quiet; done

Bu küçük değişiklik, "bazen çalışıyor bazen çalışmıyor" denen işlerin büyük kısmını ortadan kaldırır. Bir de sunucu yükü düşer.

Tezcan Kabakçı
Hosting teknik destek uzmanı ve WordPress uzmanı. 2024'ten beri bir hosting şirketinde teknik destek bölümünde çalışıyor; WordPress, DNS ve e-posta sorunlarını her gün yakından görüyor. YouTube kanalı.
Bu yazı 8 Ekim 2026 tarihinde WordPress kategorisinde yayınlandı.
Yeni yazılar e-postanıza gelsin

Ayda birkaç e-posta; istediğiniz an tek tıkla ayrılabilirsiniz.

Videolu anlatımlar YouTube'da
Sunucu ve WordPress sorunlarını kısa videolarla anlattığım kanala abone olabilirsiniz. ▶ Kanala abone ol

Yorumlar

Henüz yorum yok. İlk yorumu siz yazın.

Yorum yazın

Yorumlar onaylandıktan sonra yayımlanır. Bağlantı içeren yorumlar spam olarak değerlendirilebilir.