WordPress wp-cron.php: zamanlanmış görevler çalışmıyor ya da sunucuyu yoruyor

WordPress 70 görüntülenme Markdown

Zamanlanmış bir yazı saatinde yayınlanmadı. Yedek eklentisi gece çalışmadı. Mağazanızda sipariş mailleri geç geliyor. Bunların ortak sebebi WP-Cron'dur. WordPress zamanlanmış işleri gerçek bir sistem zamanlayıcısıyla değil, siteye her ziyaretçi geldiğinde "zamanı gelen iş var mı" diye bakarak çalıştırır. Siteniz az ziyaret alıyorsa işler gecikir; çok ziyaret alıyorsa her istekte bu kontrol yapıldığı için gereksiz yük oluşur.

Çözüm: wp-cron'u kapatıp gerçek cron kullanın

Gerçek cron, ziyaretçiden bağımsız olarak belirli aralıkla çalışır. İki adım var.

1. Ziyaretçiyle tetiklemeyi kapatın

wp-config.php dosyasında "That's all, stop editing" satırından önce şunu ekleyin:

define('DISABLE_WP_CRON', true);

2. Gerçek zamanlayıcı ekleyin

VDS'te (SSH ile): crontab -e ile her 5 dakikada WordPress'in cron'unu çalıştırın. En hafif yöntem sunucunun kendi PHP'siyle çalıştırmaktır:

*/5 * * * * cd /var/www/ornek.com && /usr/bin/php wp-cron.php > /dev/null 2>&1

Dosya sahibi farklıysa komutu o kullanıcının crontab'ına koyun (sudo crontab -u www-data -e). WP-CLI kuruluysa şu da çalışır: */5 * * * * cd /var/www/ornek.com && wp cron event run --due-now > /dev/null 2>&1.

Hosting paketinde panelde CRON bölümüne gidin, Cron Görevi Ekle'ye tıklayın, dakika alanına */5 yazıp diğer alanları * bırakın ve komut olarak şunu girin (kullanıcı adınızı ve alan adınızı kendi bilgilerinizle değiştirin):

php /home/KULLANICI/web/ornek.com/public_html/wp-cron.php

Hosting'de PHP komut satırı yolu farklı olabilir; çalışmazsa curl -s https://ornek.com/wp-cron.php > /dev/null komutunu deneyin. Paketinizdeki cron görevi sınırı vardır (10 görev). Genel cron kullanımı için cron makalesine bakın.

Çalıştığını nasıl görürüm?

  • WP-CLI ile bekleyen işleri listeleyin: wp cron event list. "Sonraki çalışma" geçmişte kalan ve birikmiş işler görüyorsanız cron çalışmıyor demektir.
  • "WP Crontrol" gibi bir eklenti tüm zamanlanmış işleri yönetim panelinde gösterir.
  • Zamanlanmış bir yazıyı birkaç dakika sonrasına ayarlayıp yayınlanmasını izleyin.

Sık sorunlar

  • Cron çalışıyor ama iş yapılmıyor: Görevin kendisi hatalıdır. debug.log'a bakın: hata günlüğü.
  • Siteniz bakım modunda ya da giriş gerektiren bir koruma arkasında: HTTP ile çağırılan wp-cron.php engellenir; PHP ile doğrudan çalıştırmak bundan etkilenmez.
  • Çok sayıda iş birikmiş ve sunucu yoruluyor: Sebep çoğu zaman bir eklentinin sürekli iş üretmesidir; Query Monitor ya da WP Crontrol ile hangi eklentiden geldiğini bulun.

Sunucu yükünü azaltmak için ayrıca önbellek kurmanız gerekir.

Sık sorulanlar

DISABLE_WP_CRON açık ama gerçek cron eklemedim, ne olur?

Hiçbir zamanlanmış iş çalışmaz: yazı zamanlama, otomatik güncelleme, yedek, mail sıraları durur. İkisini birlikte yapın.

Her dakika çalıştırmalı mıyım?

Çoğu site için 5 dakika yeterlidir. Çok hassas zamanlama gereken siteler 1 dakika yapabilir, ama bu hosting paketindeki işlemci kotasını kullanır.

WP-Cron hiç mi kullanılmamalı?

Küçük, az ziyaretçili bir sitede varsayılan hâliyle sorun çıkarmaz. Zamanlama hassasiyeti ya da yük sorunu yaşıyorsanız gerçek cron'a geçin.

İlgili makaleler

Sorununuz çözülmediyse destek talebi açın. Hangi adımı denediğinizi ve ekranda ne gördüğünüzü yazarsanız çözüm çok daha hızlı olur.

Faydalı oldu mu?

Geri bildiriminiz için teşekkürler!

Hâlâ Yardıma mı İhtiyacınız Var?

Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.