WordPress'te otomatik yazılar neden geç çıkıyor? WP-Cron ve gerçek sunucu cron'u
Kısaca: WordPress'in zamanlayıcısı WP-Cron gerçek bir saat değildir; zamanı gelen görev, siteye bir sonraki istek geldiğinde çalışır. Ziyaretçisi az olan, sayfaları önbellekten sunulan ya da DISABLE_WP_CRON tanımlı olup sunucu cron'u kurulmamış bir sitede otomatik yazı turları geç başlar ya da hiç başlamaz. Wiozen İçerik Botu sıradaki tur 15 dakikadan fazla geciktiğinde Genel bakış'ta "gecikti" yazar. Kalıcı çözüm WP-Cron'u kapatıp wp-cron.php'yi sunucu cron'uyla birkaç dakikada bir çağırmaktır.
WP-Cron neden saatinde çalışmıyor?
WordPress'te zamanlanmış görevler veritabanında bir listede durur. WordPress her sayfa isteğinde bu listeye bakar; vakti geçmiş bir görev varsa arka planda wp-cron.php'yi çağırır ve görevi çalıştırır. Yani saat 09.00'a kurulmuş bir tur, 09.00'dan sonraki ilk istekle başlar. Gece hiç ziyaretçi gelmeyen bir sitede sabahki ilk ziyarete kadar bekler.
Gecikmenin en sık üç sebebi var. Birincisi trafik azlığı. İkincisi sayfa önbelleği: ziyaretçiye hazır HTML'yi veren bir önbellek eklentisi ya da sunucu önbelleği WordPress'i hiç çalıştırmaz, o ziyaret WP-Cron'u da tetiklemez. Üçüncüsü wp-config.php'de define('DISABLE_WP_CRON', true); satırı: bazı barındırma firmaları bunu kendisi ekler. Bu satır varsa ve yerine sunucu cron'u kurulmamışsa zamanlanmış görevler hiç çalışmaz.
Geç kalan bir görev birikmez. WordPress kaçırılan aralıkları tek tek yetiştirmeye çalışmaz; görev bir kez çalışır ve bir sonraki zamana kurulur. Saatte bir turu olan bir site gece altı saat ziyaretsiz kaldıysa sabah altı değil bir tur çalışır.
Botun turunun geciktiğini nereden anlarım?
Eklentinin Genel bakış sekmesindeki özet kutularından biri Sıradaki turdur ve turun saatini gösterir. Bu saatin üstünden 15 dakikadan fazla geçtiği hâlde tur başlamadıysa kutu "gecikti; zamanlanmış görevler çalışmıyor olabilir" yazar. Kutu "zamanlanmadı" diyorsa sorun cron değil: bot açık görünse de zamanlama kaydı yok demektir, Bağlantı ve otomasyon sekmesinde ayarı bir kez kaydetmek turu yeniden kurar.
Zamanlama yalnız iki şart birlikte sağlanınca kurulur: bir API anahtarı kayıtlı olmalı ve Botu çalıştır kutusu işaretli olmalı. Kutuyu işaretleyip kaydettiğinde ya da sıklığı değiştirdiğinde ilk tur 5 dakika sonraya kurulur, sonrakiler seçtiğin aralıkla gelir. Sıklık için beş seçenek var: saatte bir, 3 saatte bir, 6 saatte bir, günde iki kez ve günde bir (varsayılan). Her turda etkin kategorilerin her biri için kategori ayarındaki sayı kadar yazı yazılır, en çok 5.
Bir gecikmenin cron'dan mı yoksa turun ortada kesilmesinden mi geldiğini ayırmak gerekir. Tur başladı ama bitmediyse panelde "Tur takıldı" görünür; bu durum turun yarıda kalması rehberinde anlatılıyor. "gecikti" ise turun hiç başlamadığını söyler.
Gerçek sunucu cron'u nasıl kurulur?
Sunucu cron'u, barındırmanın işletim sistemi seviyesindeki zamanlayıcısıdır ve ziyaretçiden bağımsız çalışır. Kurulum iki adım: WordPress'in ziyaretle tetiklenen cron'unu kapatmak ve wp-cron.php'yi düzenli aralıkla çağırmak.
wp-config.phpdosyasında/* That's all, stop editing! */satırının üstüne aşağıdaki ilk satırı ekle. Satır zaten varsa dokunma, sadece ikinci adımı yap.- Barındırma panelinde (cPanel'de "Cron Jobs", Plesk'te "Zamanlanmış Görevler") 5 dakikada bir çalışan yeni bir görev aç ve komut olarak aşağıdaki ikinci satırı yaz. Adresi kendi alan adınla değiştir.
- Bir sonraki tur saatinden sonra Genel bakış'a bak. "gecikti" kalktıysa ve Günlük sekmesinde yeni satırlar varsa kurulum çalışıyor.
define('DISABLE_WP_CRON', true);
*/5 * * * * curl -s "https://ornek.com/wp-cron.php?doing_wp_cron" > /dev/null 2>&1Aralığı 5 dakikadan uzun tutma. Botun zamanlanmış turları tek görev değil: bir turu oluşturan parçalar, görsel kuyruğunun 15 dakikada bir dönen yeniden denemesi ve takılan turu kapatan bekçi de WP-Cron olayıdır. Cron 30 dakikada bir çalışırsa bu işlerin hepsi o aralığa kadar bekler.
DISABLE_WP_CRON açıkken bot nasıl davranır?
Şimdi çalıştır düğmesi cron'a bağlı değildir. Bot turu açar ve ilk parçayı sitenin kendi admin-ajax.php adresine attığı bir arka plan isteğiyle başlatır; sonraki parçalar da aynı yolla birbirini çağırır. Bu yüzden zamanlanmış turlar çalışmazken elle başlatılan tur çalışabilir. "Şimdi çalıştır" sorunsuz ama zamanlanmış tur hiç gelmiyorsa ilk şüphelenmen gereken yer cron'dur.
Her parça aynı işi ayrıca bir WP-Cron olayı olarak da bırakır. Arka plan isteği bir güvenlik eklentisine ya da şifreli bir test sitesinin kapısına takılırsa tur bu yedekle ilerler. WP-Cron açıkken yedek bir sonraki ziyaretle çalışır; DISABLE_WP_CRON açıkken sunucu cron'unun bir sonraki çağrısını bekler. 5 dakikalık bir cron'da her yazı adımı arasına en kötü durumda birkaç dakika girer.
Görsel bekleyen taslaklar panelindeki Hepsini şimdi dene düğmesi de iki yoldan birini seçer. WP-Cron açıkken işi arka plana bırakır ve sayfa hemen döner; DISABLE_WP_CRON tanımlıysa görselleri aynı istekte üretir, sayfa iş bitene kadar bekler.
Sunucu cron'u kuramıyorsam ne yapabilirim?
- Bazı ucuz paketlerde cron yoktur. O zaman WP-Cron açık kalsın ve sıklığı sitenin trafiğine göre seç: günde bir ya da günde iki kez, günde birkaç ziyareti olan bir sitede de saatine yakın çalışır.
- Sayfa önbelleği kullanıyorsan önbelleğin
wp-cron.php'yi dışarıda bıraktığından emin ol. Çoğu önbellek eklentisi bunu kendisi yapar. - Tur sürerken yönetim panelini açık tutmak da işe yarar: Genel bakış her 4 saniyede bir sunucuya istek atar ve WP-Cron açıksa bu istekler bekleyen görevi tetikler. Yalnız kalıcı bir çözüm değildir.
- Dışarıdan bir "uptime" ya da izleme servisinin siteyi birkaç dakikada bir açması da WP-Cron'u tetikler, ama yalnız sayfa önbellekten verilmiyorsa.
Kurulumun geri kalanı, kategoriler ve taslak ya da canlı yayın seçimi otomatik makale rehberinde var.
Sık sorulan sorular
"gecikti" uyarısı ne zaman çıkar?
Sıradaki turun saatinin üstünden 15 dakikadan fazla geçtiği hâlde tur başlamadıysa. Bu genelde WP-Cron'un tetiklenmediğini gösterir.
Botu açtıktan sonra ilk tur ne zaman başlar?
Kaydettikten 5 dakika sonra. Sıklığı değiştirdiğinde de zamanlama sıfırlanır ve ilk tur yine 5 dakika sonraya kurulur.
DISABLE_WP_CRON ekledim, bot hiç yazı yazmıyor. Neden?
Bu satır WordPress'in kendi zamanlayıcısını kapatır. Yerine wp-cron.php'yi çağıran bir sunucu cron'u kurmadıysan zamanlanmış turlar hiç başlamaz. "Şimdi çalıştır" ise cron'a bağlı olmadığı için çalışmaya devam eder.
Sunucu cron'u kaç dakikada bir çalışmalı?
5 dakika iyi bir değer. Turun parçaları, görsel kuyruğu ve takılan turu kapatan bekçi de cron olayı olduğu için daha uzun aralık bu işleri geciktirir.
Gece kaçan turlar sabah hepsi birden mi çalışır?
Hayır. WordPress geciken görevi bir kez çalıştırır ve bir sonraki zamana kurar; kaçan aralıklar birikmez.
Henüz kurmadıysan İçerik Botu'nun sayfasından eklentiyi indir; zamanlamayı açmadan önce bir "Şimdi çalıştır" turuyla dene.
Diğer rehberler: Türkiye'den kredi kartı olmadan yapay zekâ API'si nasıl kullanılır? · OpenAI uyumlu bir API mevcut bir araca nasıl bağlanır? · Yapay zekâ API maliyeti nasıl hesaplanır? · Yapay zekâ API anahtarım sızdıysa ne yapmalıyım? · Yapay zekâ API'siyle görsel nasıl üretilir ve görsel başı maliyeti ne kadar? · Yapay zekâ API'si neden 429 hatası veriyor, nasıl düzeltilir? · Uzun yanıt bekleyen API isteği neden zaman aşımına düşer: akışlı mı, akışsız mı? · Anthropic Messages API mı, OpenAI Chat Completions mı: hangisini kullanmalıyım? · Bağlam penceresi (context window) nedir, 1 milyon token ne işe yarar? · Hangi yapay zekâ modelini seçmeliyim: fiyat, bağlam ve kaliteye göre karar · Düşünen (reasoning) model neden boş cevap döner, düşünme tokenları neden ücretlenir? · API bakiyem neden beklediğimden hızlı bitiyor? Harcamayı istek istek takip etmek · Bir web sayfası yapay zekâya vermek için Markdown'a nasıl çevrilir? · WordPress'te yapay zekâyla otomatik makale nasıl yazdırılır? · Blog için RSS ve Google Trends'ten konu nasıl bulunur? · Yapay zekâyla yazılan içerik Google'da ve yapay zekâ yanıtlarında görünür mü? · WordPress'te yapay zekâyla yazılan makalelere iç bağlantı nasıl ekletilir? · WordPress'te her yazıya birbirine benzemeyen öne çıkan görsel yapay zekâyla nasıl ürettirilir? · Yapay zekâya blog yazısı yazdırırken içerik tarifi (brief) nasıl yazılır? · Yemek tarifi sitesine yapay zekâyla tarif yazdırırken nelere dikkat etmeli? · WordPress eklentisini yapay zekâ API hesabına bağlarken çıkan hatalar nasıl çözülür? · WordPress'te yapay zekâ yazı botu neden yarıda kalıyor? "Tur takıldı" uyarısı ve LiteSpeed · Yapay zekâ yazı botuyla İngilizce ya da başka dilde blog yazısı nasıl yazdırılır? · "İçerik Botu yazı üretemiyor" uyarısı ne demek? Bot günlüğündeki satırları okumak