Zamanlanmış WordPress Yazılarım Neden Yayınlanmıyor? Sanki Site Uykuya Geçti!

0

Merhaba arkadaşlar,

Sitemde son zamanlarda garip bir durumla karşılaşıyorum. Zamanlanmış gönderilerimi belirli bir tarihe ve saate ayarlıyorum, ama bir bakıyorum yayınlanmamış! Bazen saatler sonra, bazen de hiç yayınlanmıyor. Yedeklemelerim de düzgün çalışmıyor gibi hissediyorum, sanki otomatik görevler askıda kalmış gibi. Sunucuyu yormamak için WP-CronU kapatıp gerçek cron kullanmak gerektiğini duydum ama bu işler bana biraz karışık geliyor. Acaba benim gibi bu derdi çeken var mı, varsa nasıl bir çözüm buldunuz? Gerçekten can sıkıcı bir durum, sitenin sağlıklı çalışmadığını hissetmek kötü bir tecrübe. Bu konuda deneyimli arkadaşların önerilerini dört gözle bekliyorum.

Cevaplar (3)

0

Eyvallah dostum, dediğin gibi bu WP-Cron işi bazen insanı deli edebilir. Sanki wordpress kendi kendine trip atıyor gibi. Benim de başıma gelmişti bu durum, zamanlanmış yazılar tıkır tıkır işlemiyor, yedeklemeler aksıyordu. İlk başta 'Aman canım, ne olacak' dedim ama baktım ki işler sarpa sarıyor. Meğerse bu WP-Cron, sitene her ziyaretçi geldiğinde çalışıp planlanmış görevleri kontrol ediyormuş. Düşünsene, sitende trafik azsa görevler aksıyor, çoksa da sunucuya ek yük bindiriyor. Yani tam anlamıyla 'Ne şiş yansın ne kebap' durumu yok burada.

Benim tecrübemde, bu durum genellikle düşük veya yüksek trafikli sitelerde patlak veriyor. Düşük trafikte görevler gecikiyor çünkü kimse siteyi tetiklemiyor, yüksek trafikte ise her sayfa yüklemesinde cron tetikleniyor ve sunucuyu yavaşlatıyor. İşte tam bu noktada, uzmanların dediği gibi 'Gerçek cron işine geçmek' altın kural oluyor. WordPress'in varsayılan cron sistemini devre dışı bırakıp, sunucu tarafında düzenli aralıklarla çalışan bir cron job kurman gerekiyor.

Peki nasıl yaptım ben bunu? İlk önce Wp-config.php dosyasını açıp içine Define('DISABLE_WP_CRON', true); kodunu ekledim. Bu kod, WordPress'in kendi cron sistemini devre dışı bırakıyor. Aman dikkat, bu kodu ekledikten sonra sitendeki otomatik görevler tamamen durur, o yüzden hemen ardından sunucu cronunu kurman şart. Sonra da hosting panelindeki (cPanel gibi) 'Cron İşleri' bölümüne girdim. Oradan yeni bir cron işi ekleyerek Wget -q -O - https://siteninadresi.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1 benzeri bir komutla 5 veya 15 dakikada bir çalışacak şekilde ayarladım. Bu komut, sunucunun Wp-cron.php dosyasını belirli aralıklarla tetiklemesini sağlıyor. Böylece trafik olsa da olmasa da görevler aksamadan çalışıyor. Bir de WP Crontrol gibi eklentilere göz atabilirsin, görevlerin durumunu falan görmen için çok işe yarıyor. Bazen de bir eklenti çakışması bu tür sorunlara yol açabiliyor, o yüzden yeni bir eklenti kurduysan veya güncellediysen, onu pasifize edip denemek de bir yol olabilir. Umarım işine yarar, kolay gelsin! :)

0
Bee profil fotoğrafı Bee Yönetici Platform Uzmanı

wordpress platformunda zamanlanmış görevlerin aksaması, genellikle WP-Cron sisteminin doğasından kaynaklanan yaygın bir performans ve güvenilirlik sorunudur. WP-Cron, geleneksel sunucu tabanlı cron işlerinin aksine, her sayfa yüklemesinde tetiklenen sanal bir zamanlayıcıdır. Bu durum, düşük trafikli sitelerde planlanmış görevlerin gecikmesine veya hiç çalışmamasına, yüksek trafikli sitelerde ise her tetiklenmede ek sunucu yükü oluşturarak performansı olumsuz etkilemesine neden olabilir.

sorun giderme sürecine başlarken, ilk adım olarak WP-Cron sistemini devre dışı bırakmak gereklidir. Bu, sitenizin kök dizininde bulunan Wp-config.php dosyasına aşağıdaki satırı ekleyerek yapılır: Define('DISABLE_WP_CRON', true); Bu tanımlama, WordPress'in kendi iç zamanlayıcısını sayfa yüklemeleriyle tetiklemesini engeller. Ancak bu adımı uyguladıktan hemen sonra, sitenizdeki tüm zamanlanmış görevlerin duracağını unutmamak ve alternatif bir çözüm yapılandırmak kritik öneme sahiptir.

Alternatif çözüm, sunucunuzun işletim sistemi tarafından yönetilen gerçek bir Cron job oluşturmaktır. Çoğu web hosting sağlayıcısı, cPanel, Plesk veya benzeri kontrol panelleri aracılığıyla cron job ayarlama imkanı sunar. Bir cron job oluştururken, genellikle aşağıdaki gibi bir komut kullanılarak Wp-cron.php dosyasının belirli aralıklarla (örneğin her 5 veya 15 dakikada bir) doğrudan sunucu tarafından çağrılması sağlanır: /usr/local/bin/php /home/kullaniciadi/public_html/wp-cron.php >/dev/null 2>&1 veya Wget -q -O - https://alanadiniz.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1. Komut yolu ve dizin yapısı hosting sağlayıcınıza göre değişiklik gösterebilir; bu nedenle doğru yolu öğrenmek için hosting destek ekibinizle iletişime geçmek en doğrusudur.

Pro İpucu: Eğer WordPress'in varsayılan WP-Cron'unu devre dışı bırakırken HTTP kimlik doğrulaması (.htaccess ile korunan bir admin alanı gibi) kullanıyorsanız, Wp-cron.php dosyasını bu kimlik doğrulamasından hariç tutmanız gerekebilir. Aksi takdirde, sunucu tabanlı cron job dahi Wp-cron.php dosyasına erişemeyeceği için görevler yine çalışmayacaktır. Bu durum, .htaccess dosyanızda belirli kurallar ekleyerek yönetilebilir. Ayrıca, WP Crontrol gibi eklentiler, mevcut cron görevlerini görsel olarak denetlemenize ve hatta manuel olarak çalıştırmanıza olanak tanır, bu da sorun giderme sürecinde oldukça faydalıdır.

Son olarak, eğer bu adımlara rağmen sorunlar devam ediyorsa, sunucu loglarını detaylıca incelemek veya hosting sağlayıcınızdan yardım istemek, altında yatan daha derin sunucu yapılandırma veya kaynak yetersizliği gibi sorunları ortaya çıkarabilir. Zamanlanmış görevlerin düzenli çalışması, sitenizin genel sağlığı ve işlevselliği için hayati öneme sahiptir.

0

Ya arkadaş, bu wordpress cron denilen meret bazen insanın sinirlerini hoplatıyor, değil mi? Hani sanki sen bir şeyleri planlıyorsun, o arkadan iş çeviriyor gibi. Benim de zamanında başıma geldi, bir baktım yayınlanması gereken yazılar ortada yok, sanki 'Ben bugün çalışmıyorum kardeşim' demiş gibi. Dedim ne oluyor, sitenin canına mı okudular? Meğerse bu WP-Cron, sitene biri girmezse çalışmıyormuş. Yani sitenin boş kalması, görevlerin de boş kalması demek. Trafik yoksa görev de yok, ilginç bir mantık vallahi.

Peki bu işin raconu neymiş? Baktım ki herkes 'Gerçek cron kur, WP-Cron'u kapat' diyor. İlk başta gözüm korktu, dedim şimdi sunucu ayarları falan derken siteyi hepten bozarım. Ama baktım, çaresi buymuş. İlk iş, Wp-config.php dosyasına Define('DISABLE_WP_CRON', true); satırını ekledim. Bu, WordPress'in kendi kafasına göre çalışmasını engelliyor. Sonra da gittim hosting panelindeki 'Cron İşleri' kısmına, orada yeni bir görev oluşturdum. Komut olarak da /usr/bin/wget -q -O /dev/null https://seninsiten.com/wp-cron.php?doing_wp_cron benzeri bir şey yazdım, 15 dakikada bir çalışacak şekilde ayarladım. Böylece, sitenin keyfine kalmadan, sunucu otomatik olarak Wp-cron.php dosyasını tetikliyor ve işler yoluna giriyor. Artık yazılarım çatır çatır zamanında yayınlanıyor, yedeklemelerim de sorunsuz. Vallahi rahat ettim.

Bazen bu tür sorunlar, Cache (önbellek) eklentileriyle de ilgili olabilir. Onlar da cron işlerinin düzgün tetiklenmesini engelleyebilir. Hani bir şeyi düzeltirken başka bir yeri bozmak gibi. O yüzden yeni bir cache eklentisi kurduysan veya ayarlarını değiştirdiysen, bir de o cepheden kontrol etmekte fayda var. Ya da siteye sonradan eklediğin bir eklenti bu durumu tetiklemiş olabilir, onları tek tek devre dışı bırakıp denemek de bazen işe yarıyor. 'Deneme yanılma yolu' her zaman işe yarar derler. Şimdiden kolay gelsin, umarım senin de siten eski sağlığına kavuşur!