Canlı Destek Çevrimiçi
WordPress Zamanlama Kaçırıldı Sorununu Kesin Olarak Çözmek İçin 7 Adım
8 dk

WordPress Zamanlama Kaçırıldı Sorununu Kesin Olarak Çözmek İçin 7 Adım

WordPress Zamanlama Kaçırıldı hatası, birçok site sahibinin planlanmış gönderilerle karşılaştığı sinir bozucu bir sorundur. Gönderinizi saat 09:00’da yayınlanacak şekilde ayarlarsınız, ancak saati geldiğinde yayınlanmaz ve bu mesajı görürsünüz. Sorunun temelinde WordPress’in cron sistemi yatar. Bu yazıda, kök nedenleri anlayıp sorunu adım adım nasıl çözeceğinizi göreceksiniz. Her adımı uyguladığınızda planlanmış gönderileriniz zamanında yayınlanacak.

Zamanlama Kaçırıldı Sorunu Neden Oluşur?

WordPress, planlanmış gönderileri yayınlamak için WP-Cron adlı bir zamanlama sistemine dayanır. WP-Cron, sunucu tarafındaki gerçek bir cron işi değildir; her sayfa yüklemesinde tetiklenir. Bir ziyaretçi sitenize geldiğinde, WordPress biriken zamanlanmış görevleri kontrol eder ve varsa çalıştırır.

Bu mimari, özellikle düşük trafikli sitelerde “Zamanlama Kaçırıldı” hatasına yol açar. Eğer planlanan zamanda kimse siteyi ziyaret etmezse, cron tetiklenmez ve gönderi yayınlanmaz. Başka etkenler de vardır:

  • Önbellek eklentileri sayfaları statik olarak sunar; bu, PHP’nin çalışmasını ve WP-Cron’un tetiklenmesini engeller.
  • wp-cron.php dosyasına erişim engelleri (güvenlik duvarı, dosya izinleri veya DISABLE_WP_CRON sabiti).
  • WordPress dosya yapısındaki bozukluklar veya eksik çekirdek dosyalar.
  • Zamanlanmış görevlerin kilitlenmesi; bir görev tamamlanmadan kilitlenir ve sonraki denemeler başarısız olur.
  • Sunucu kaynak yetersizlikleri veya PHP zaman aşımı, cron işleminin yarıda kalmasına neden olabilir.

Çoğu kullanıcı sorunun sadece trafikle ilgili olduğunu düşünür, oysa önbellek ve cron yapılandırması gibi faktörler çok daha kritiktir.

1. Manuel Ziyaret ve Trafik Eksikliğini Giderme

WP-Cron bir ziyaretçiyle tetiklendiğine göre, en basit geçici çözüm planlanan saatte siteyi ziyaret etmektir. Ancak bu pratik değildir. Daha kalıcı bir çözüm için harici bir tetikleyici kullanabilirsiniz.

Kolay yol: cron-job.org gibi ücretsiz bir harici cron servisi kullanın. Bu servis, belirlediğiniz aralıklarla sitenizin wp-cron.php dosyasını çağırır. Ayarlamak için:

  • Servise kaydolun ve yeni bir cron işi oluşturun.
  • URL olarak https://siteniz.com/wp-cron.php girin (HTTPS kullanın).
  • Sıklığı 5 dakika olarak ayarlayın. Daha sık yapmak sunucuyu gereksiz yormaz; WP-Cron birikmiş işleri topluca çalıştırır.

Bu yöntem, sitenizde hiç ziyaretçi olmasa bile cron’un düzenli çalışmasını sağlar ve hatayı büyük ölçüde ortadan kaldırır. Ancak, önbellek sorunları devam ediyorsa yeterli olmayabilir.

2. Önbellek Eklentisi Yapılandırmasını Cron Dostu Hale Getirme

WP Rocket, W3 Total Cache, LiteSpeed Cache gibi önbellek eklentileri, PHP yürütmesini atlayarak performansı artırır. Ne yazık ki bu, WP-Cron’un tetiklenmesini de engeller. Neyse ki çoğu eklenti, cron görevlerini önceden yükleme özelliği sunar.

WP Rocket örneği: Eklenti ayarlarında “Cron” sekmesine gidin. “Cron görevlerini her sayfa yüklemesinde çalıştır” seçeneğini etkinleştirin. Bu, her sayfa isteğinden önce cron’un kontrol edilmesine izin verir.

LiteSpeed Cache özelse: “Crawler” ayarları altında cron’u tetiklemek için bir ayar bulunur. Ayrıca, .htaccess dosyasında önbelleğe alınmayacak URL’ler arasına wp-cron.php‘yi ekleyebilirsiniz:

RewriteRule ^wp-cron.php$ - [L]

Önbellek eklentiniz yoksa ve sorun sürüyorsa, hosting panelinizdeki sunucu seviyesinde önbellek (Varnish, Nginx FastCGI Cache) bu hataya neden olabilir. Hosting sağlayıcınızdan wp-cron.php‘yi önbelleğin dışında tutmasını isteyin.

3. WordPress Yerleşik Cron Sistemini Devre Dışı Bırakıp Gerçek Sunucu Cron’una Geçme

En sağlam çözüm, WP-Cron’u tamamen devre dışı bırakıp gerçek bir sunucu cron işine geçmektir. Bu, cron tetikleme mekanizmasını ziyaretçilerden bağımsız hale getirir.

Adımlar:

  1. wp-config.php dosyasını düzenleyin. Aşağıdaki satırı ekleyin:
    define('DISABLE_WP_CRON', true);
  2. Hosting panelinizde (cPanel, Plesk vb.) bir Cron Job oluşturun.
  3. Komut olarak şunu girin:
    /usr/bin/php /home/kullaniciadi/public_html/wp-cron.php >/dev/null 2>&1
    Yolu sunucu dosya sisteminize göre düzenleyin. PHP yolunu hosting destekten öğrenebilirsiniz; yaygın olanlar: /usr/bin/php, /usr/local/bin/php, /opt/cpanel/ea-php74/root/usr/bin/php.
  4. Zaman aralığını ayarlayın. Genelde 5-10 dakikada bir çalıştırmak yeterlidir. Daha sık ayarlamak sunucuya ek yük bindirmez; cron kontrolü sadece bekleyen iş varsa çalışır.

Bu yöntem, önbellek ve trafik sorunlarını tamamen aşar. Eğer sunucu cron’u doğru çalışıyorsa “Zamanlama Kaçırıldı” hatasını bir daha görmezsiniz.

4. Cron Görev Kilitlemesini Temizleme (Cron-Unlock)

Bazen bir cron görevi başarısız olur ve veritabanında kilitlenmiş kalır. Bu kilit, aynı görevin tekrar çalışmasını engeller ve “Zamanlama Kaçırıldı” hatasına yol açar. Kilitlenmiş görevleri temizlemek için:

  • Veritabanı tablosuna bakın: wp_options tablosunda cron satırını bulun. option_value sütununda serileştirilmiş bir dizi göreceksiniz. Kilitli görevlerin anahtarlarında lock ifadesi geçer. Bunları kaldırmak için serileştirilmiş veriyi manuel düzenlemek risklidir.
  • WP Control eklentisini kullanın: Bu ücretsiz eklenti, cron görevlerini görsel olarak listeler. Kilitlenmiş bir görev görürseniz (cron event is locked uyarısıyla birlikte), görevi seçip “Delete” diyebilirsiniz. WordPress bir sonraki kontrolde bu görevi yeniden planlayacaktır.

Kilit temizliği sonrası planlanmış gönderiyi tekrar yayınlamayı deneyin. Sorun kilitlenmeden kaynaklanıyorsa, gönderi hemen yayınlanabilir.

5. WordPress Çekirdek Dosyalarını Onarma

wp-cron.php dosyasının bozulması veya eksik olması cron sistemini tamamen çökertebilir. Bunu gidermek için WordPress çekirdek dosyalarını yeniden yüklemek en temiz çözümdür.

Yöntem: WordPress yönetici panelinde Gösterge Paneli > Güncellemeler sayfasına gidin. “WordPress’i yeniden yükle” düğmesine tıklayın. Bu işlem, tüm çekirdek dosyaları en son sürümle değiştirir ve bozuklukları giderir. Mevcut sürümünüzü korur, sadece dosyaları tazeler.

Bu adım, özellikle güvenlik eklentileri veya başarısız güncellemeler sonrası oluşan hatalarda etkilidir. İşlem bir dakikadan kısa sürer ve sitenize zarar vermez.

6. Tema ve Eklenti Çakışmalarını Test Etme

Bazı temalar veya eklentiler, cron görevlerini engelleyecek şekilde kodlanmış olabilir. Nadiren de olsa, bu durum “Zamanlama Kaçırıldı” hatasını tetikler. Özellikle wp_clear_scheduled_hook veya wp_unschedule_event fonksiyonlarını yanlış kullanan eklentiler suçlu olabilir.

Test için:

  1. Tüm eklentileri geçici olarak devre dışı bırakın.
  2. Varsayılan WordPress temasına (Twenty Twenty-Five vb.) geçin.
  3. Bir test gönderisi planlayın ve sonucu gözlemleyin.

Hata kaybolursa, eklentileri tek tek etkinleştirip soruna hangisinin yol açtığını bulun. Sorunlu eklentiyi belirledikten sonra alternatifini arayın veya geliştiriciye bildirin.

7. Hosting Ortamından Kaynaklanan Sorunları Kontrol Etme

Sunucu tarafındaki kısıtlamalar da bu hataya neden olabilir. Özellikle paylaşımlı hostinglerde PHP bellek limiti, zaman aşımı süresi veya process fork kısıtlamaları cron işlemlerini engeller.

Kontrol listesi:

  • PHP bellek limiti: En az 256M olmalıdır. wp-config.php dosyasına define('WP_MEMORY_LIMIT', '256M'); ekleyerek yükseltebilirsiniz.
  • PHP zaman aşımı: max_execution_time değeri en az 60 saniye olmalı; 120 idealdir. Hosting panelinden veya php.ini dosyasından ayarlanır.
  • Güvenlik duvarı ve ModSecurity: Hosting sağlayıcınızın güvenlik duvarı wp-cron.php isteklerini engelliyor olabilir. Sunucu günlüklerini kontrol edin; 403 veya 406 hataları görürseniz sağlayıcınızdan ilgili kuralı gevşetmesini isteyin.
  • Sunucu cron logları: Adım 3’teki gerçek cron işini kurduysanız, cron loglarında hata mesajı olup olmadığını kontrol edin. Genelde /var/log/cron içinde bulunur.

Hosting sağlayıcınızla iletişime geçmekten çekinmeyin; çoğu firma bu tür WordPress sorunlarında destek sağlar.

WordPress Zamanlama Kaçırıldı Sorunu İçin Hızlı Kontrol Tablosu

Olası Neden Belirti En Hızlı Çözüm
Düşük trafik Gece saatlerinde planlanan gönderiler yayınlanmaz Harici cron servisi kullan (Adım 1)
Önbellek Eklenti kurduktan sonra hata başladı Önbellek eklentisinde cron ayarını etkinleştir (Adım 2)
WP-Cron devre dışı DISABLE_WP_CRON tanımlı ama sunucu cron’u yok Sunucu cron işi ekle (Adım 3)
Cron kilidi Belirli bir gönderi sürekli kaçırılıyor WP Control ile kilidi kaldır (Adım 4)
Bozuk çekirdek dosya Güncelleme sonrası sorun çıktı WordPress’i yeniden yükle (Adım 5)
Eklenti çakışması Hata, eklenti güncellemesiyle başladı Eklentileri devre dışı bırakıp test et (Adım 6)

Bu tablo, hatayı hızla teşhis edip en uygun adıma yönlendirir. Çoğu durumda ilk üç adım sorunu çözer.

Ek İpuçları ve Sık Yapılan Hatalar

Uygulama sırasında göz ardı edilen birkaç nokta vardır:

  • Saat dilimi kontrolü: WordPress ayarlarında saat diliminizin doğru olduğundan emin olun (Ayarlar > Genel). Yanlış saat dilimi, gönderinin planlanan zamanda yayınlanmamasına yol açabilir, ancak bu hata mesajı vermez; gönderi planlanmış olarak kalır.
  • Çok sayıda cron görevi: Özellikle yedekleme eklentileri, saatte bir ağır cron görevleri oluşturur. Bunlar üst üste bindiğinde sunucu yükü artar ve planlanmış gönderiler zamanında işlenemeyebilir. WP Control ile tekrar eden gereksiz cron’ları temizleyin.
  • SSL sertifikası sorunları: Harici cron servisi, sitenizin SSL sertifikasını doğrulayamazsa istek başarısız olur. https kullandığınızdan ve sertifikanın geçerli olduğundan emin olun.
  • Cron komutunda hata ayıklama: Sunucu cron işinde >/dev/null 2>&1 yerine geçici olarak >/home/kullaniciadi/cron.log 2>&1 kullanarak çıktıyı bir dosyaya yönlendirin. Böylece olası PHP hatalarını görebilirsiniz.

Bazı kullanıcılar çözümü karmaşıklaştırır. Oysa sorun genelde tek bir nedenden kaynaklanır. Hepsini birden yapmaya çalışmak yerine, yukarıdaki tabloya göre ilerlemek daha hızlı sonuç verir.

Zamanlama Hatasını Kalıcı Olarak Çözmek İçin Sıradaki Adımınız

Artık “Zamanlama Kaçırıldı” hatasının nedenlerini ve en etkili çözümlerini biliyorsunuz. Hızlı bir kalıcılık için iki adımı birleştirmek en iyisidir: Önbellek eklentisini cron’a izin verecek şekilde yapılandırın (Adım 2) ve sunucu cron işini kurun (Adım 3). Bu ikili, hem mevcut sorunu çözer hem de gelecekteki hataları önler. Eğer hostinginiz sunucu cron’una izin vermiyorsa, harici servis (Adım 1) iyi bir alternatiftir.

Unutmayın, planlanmış gönderiler sitenizin yayın akışını düzenli tutar ve bu hatayı ortadan kaldırmak, profesyonel bir izlenim için önemlidir. Şimdi sitenizin cron durumunu kontrol edip ilk adımı atın.

İlgili Yazılar

15 yorum

  1. wp-cron.php erişimini engellemek güvenlik için iyi deniyor ama bu soruna yol açması can sıkıcı. Dengeyi nasıl kuracağız?

  2. Küçük bir blog işletiyorum, trafik neredeyse yok. Planlanmış yazılarım hiç zamanında yayınlanmadı. Harici cron-job.org çözümü işe yarar gibi, ama kurulumu zor mu emin değilim.

  3. Makalede kilitlenen zamanlanmış görevlerden bahsedilmiş. Bu kilitlenme nasıl çözülüyor, veritabanından manuel müdahale mi gerekiyor yoksa eklentiyle hallolur mu?

  4. Birçok rehberde DISABLE_WP_CRON sabitinin eklenmesi öneriliyor, ama bu yazıda sorun kaynağı olarak gösterilmiş. Hangisi doğru? Cron’u devre dışı bırakıp gerçek bir sunucu cron’u mu kurmalıyım, yoksa varsayılanı mı kullanmalıyım?

  5. Dosya izinleri veya bozuk çekirdek dosyalar konusuna değinilmesi iyi olmuş. Geçenlerde bir güncelleme sonrası böyle bir sorun yaşadım, dosyaları kontrol etmek aklıma gelmemişti.

  6. Adımlar net görünüyor ama cron-job.org gibi ücretsiz servislerin güvenilirliği konusunda endişeliyim. Siteye sürekli istek atması sunucuya yük bindirir mi ya da güvenlik açığı yaratır mı? Bununla ilgili deneyimi olan var mı?

Yorum Yaz

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir