WP-Cron Nasıl Devre Dışı Bırakılır? Sistem Cronuna Geçiş Rehberi

  • Konuyu Başlatan Konuyu Başlatan Admin
  • Başlangıç tarihi Başlangıç tarihi

Admin

Webmaster
Admin
Kurumsal+
Puan 18
Çözümler 0
Katılım
3 Kas 2025
Mesajlar
99
Tepkime puanı
0

WP-Cron Nasıl Devre Dışı Bırakılır? Sistem Cronuna Geçiş Rehberi​

WordPress’te ileri bir tarihe zamanladığınız yazıların yayımlanması, güncelleme kontrolleri ve bazı eklentilerin arka plan işlemleri WP-Cron üzerinden yürütülür. Bu sistem, ayrıca bir zamanlayıcı kurmadan birçok işlemin otomatik yapılmasını sağlar.
Ancak varsayılan WP-Cron çalışma düzeni, siteye gelen isteklere bağlıdır. Ziyaretçi az olduğunda görevler gecikebilir; yoğun ve ağır işlemler bulunan sitelerde ise kaynak kullanımı araştırılması gereken bir konuya dönüşebilir.
Bu nedenle bazı projelerde görevleri sunucunun sistem cronuyla tetiklemek daha uygun olur. Amaç, zamanlanmış görevleri kaldırmak değil; onları ziyaretçi trafiğinden bağımsız çalıştırmaktır.
Bu rehberde geçişin nasıl yapılacağını, cPanel üzerinden cron tanımlamayı ve kurulumun gerçekten çalıştığını doğrulama yöntemlerini anlatacağız.

WP-Cron Nedir ve Nasıl Çalışır?​

WP-Cron, WordPress’in zamanlanmış işlemleri yönetmek için kullandığı mekanizmadır. Zamanlanmış yazıların yayımlanması ve güncelleme kontrolleri, çekirdekteki kullanım örnekleri arasındadır. Eklentiler de kendi görevlerini bu sisteme ekleyebilir.
Sunucunun sistem cronu belirlenen takvime göre çalışır. Varsayılan WP-Cron ise sürekli çalışan ayrı bir zamanlayıcı değildir. WordPress’e ulaşan istekler, zamanı gelmiş görevlerin kontrol edilmesine fırsat sağlar.
Örneğin bir yazıyı saat 09.00’a zamanladığınız halde o saatlerde WordPress’i çalıştıran bir istek oluşmazsa, yayımlama işlemi daha sonra tetiklenebilir. Tamamen önbellekten sunulan ziyaretler de her durumda WordPress’i çalıştırmayabilir.
Burada sık yapılan bir yorum hatası vardır: Her ziyaret, bütün cron görevlerini yeniden çalıştırmaz. WordPress zamanı gelen görevleri kontrol eder; çalışma kilidi de gereksiz eş zamanlı tetiklemeleri sınırlamaya yardımcı olur.

Sistem Cronuna Geçmek Ne Zaman Mantıklıdır?​

Aşağıdaki durumlarda geçiş değerlendirilebilir:
  • Zamanlanmış yazılar düzenli olarak gecikiyorsa.
  • Düşük trafikli bir sitede görevlerin ziyaretçiden bağımsız çalışması gerekiyorsa.
  • Arka plan işlemlerinin hangi aralıklarla tetiklendiğini kontrol etmek istiyorsanız.
  • Cron çalışmaları sırasında kaynak kullanımı yükseliyorsa.
  • Sunucuda bu işleri izleyebileceğiniz ve yönetebileceğiniz bir ortam varsa.
Ancak yavaş bir WordPress sitesinde WP-Cron’u hemen suçlamak doğru değildir. Uzun süren veritabanı sorguları, sorunlu bir eklenti veya ağır bir yedekleme görevi de yük oluşturabilir.
Sistem cronuna geçmek, ağır görevin yaptığı işi azaltmaz. Aynı işlem yine çalışacağı için tetikleme düzeniyle görevin maliyetini ayrı ayrı değerlendirmek gerekir.

Geçiş Öncesinde Hazırlık Yapın​

Önce mevcut çalışma düzenini inceleyin. Hosting sağlayıcınız veya yönetim aracınız, WordPress için zaten harici bir zamanlayıcı kurmuş olabilir. Böyle bir durumda ikinci bir cron işi eklemek gereksizdir.
Hazırlık sırasında şu bilgileri belirleyin:
  1. WordPress’in kurulu olduğu dizin.
  2. Kullanılacak tetikleme yöntemi.
  3. Hosting paketinin izin verdiği en kısa cron aralığı.
  4. Görevlerin kabul edilebilir gecikme süresi.
  5. Hata çıktılarının nasıl izleneceği.
Ayrıca wp-config.php dosyasının bir kopyasını alın. Değişiklikten sonra sözdizimi hatası oluşursa bu kopya geri dönüşü kolaylaştırır.
Önce dış tetikleyiciyi hazırlayıp test edin, ardından WordPress’in otomatik tetiklemesini kapatın. WordPress’in resmi sistem zamanlayıcısı rehberi de harici görevin kurulmasını ve sonrasında otomatik tetiklemenin devre dışı bırakılmasını anlatır.

1. Adım: Tetikleme Yöntemini Seçin​

Üç yaygın seçenek vardır:
YöntemÇalışma biçimiKontrol edilmesi gereken nokta
curlwp-cron.php adresine HTTP isteği gönderir.DNS, HTTPS, yönlendirme ve güvenlik kuralları
wgetAynı adrese HTTP isteği gönderebilir.Komutun kullanılabilirliği ve hata çıktıları
WP-CLIWordPress görevlerini komut satırından çalıştırır.Dosya yolu, PHP ortamı ve kullanıcı izinleri

WP-Cron Nasıl Devre Dışı Bırakılır? Sistem Cronuna Geçiş Rehberi​

HTTP yöntemleri, web üzerinden çalışan WordPress ortamını kullanır. WP-CLI ise web sunucusuna istek göndermeden görevleri çalıştırabilir.
Bununla birlikte WP-CLI’nin her kurulumda kesin olarak daha az bellek harcadığını veya daha hızlı olduğunu söylemek doğru değildir. Eklentilerin davranışı ve yapılan işlemler sonucu etkiler.

2. Adım: HTTP Komutunu Hazırlayın​

curl kullanılabilen bir sunucuda şu örnek değerlendirilebilir:
/usr/bin/curl --fail --silent --show-error --connect-timeout 10 --max-time 120 --output /dev/null 'https://ornek.com/wp-cron.php'
Komutu kullanmadan önce:
  • ornek.com yerine kendi alan adınızı yazın.
  • WordPress bir alt dizindeyse doğru yolu kullanın.
  • /usr/bin/curl yolunu sunucunuzdaki gerçek komut yoluyla doğrulayın.
  • Adresin doğrudan doğru HTTPS adresine ulaştığından emin olun.
Örneğin WordPress /blog/ altında kuruluysa hedef adres şöyle olabilir:
https://ornek.com/blog/wp-cron.php
Komuttaki --silent ilerleme çıktısını kapatırken --show-error hataların görünmesini sağlar. --fail, HTTP hata yanıtlarında başarısızlık bildirilmesine yardımcı olur. --output /dev/null ise yanıt gövdesinin kaydedilmesini engeller.
Buradaki bağlantı ve toplam istek süreleri örnektir. Kendi ortamınıza göre değerlendirin. HTTP isteğinin tamamlanması, arka plandaki bütün işlemlerin başarıyla bittiğini tek başına kanıtlamaz.

3. Adım: cPanel’de Cron İşi Oluşturun​

cPanel’de Cron Jobs bölümünü açın. Menü görünmüyorsa sağlayıcınız bu özelliği hesabınız için kapatmış olabilir.
Beş dakikalık bir örnek için zaman alanları şöyle doldurulur:
AlanDeğer
Minute*/5
Hour*
Day*
Month*
Weekday*

Command alanına hazırladığınız curl komutunu yazın ve görevi ekleyin. Komutlarda tam dosya yolunu kullanmak, cron ortamındaki yol farklılıklarından kaynaklanan sorunları azaltır.
Linux crontab üzerinden işlem yapılıyorsa aynı örnek tek satır olarak yazılabilir:
*/5 * * * * /usr/bin/curl --fail --silent --show-error --connect-timeout 10 --max-time 120 --output /dev/null 'https://ornek.com/wp-cron.php'
cPanel’in zaman alanlarını ayrı dolduruyorsanız [B]*/5 * * * *[/B] kısmını Command alanına tekrar eklemeyin.
İlk kurulumda hata bildirimlerini takip edin. Komutu terminalde çalıştırabilmek faydalı bir kontroldür; ayrıca görevin panelden otomatik çalıştığını da doğrulamak gerekir.

4. Adım: WordPress’in Otomatik Tetiklemesini Kapatın​

Harici görevin çalıştığını doğruladıktan sonra wp-config.php dosyasını açın.
Dosyada aynı sabitin daha önce tanımlanıp tanımlanmadığını kontrol edin. Varsa ikinci bir satır eklemek yerine mevcut tanımı düzenleyin:
define( 'DISABLE_WP_CRON', true );
Bu tanım, WordPress’in yüklenmesini başlatan wp-settings.php çağrısından önce bulunmalıdır. Standart dosya düzeninde şu yorumun üstüne yerleştirilebilir:
/* That's all, stop editing! Happy publishing. */
Yorum satırının kendisi çalışan kod değildir. Asıl önemli nokta, sabitin WordPress yüklenmeden önce tanımlanmasıdır.
DISABLE_WP_CRON, otomatik tetiklemeyi kapatır. Kayıtlı görevleri silmez; sistem cronunun wp-cron.php üzerinden görevleri çalıştırması için kullanılabilir.

WP-CLI ile Alternatif Kurulum​

WP-CLI bulunan bir sunucuda zamanı gelmiş görevler şu şekilde çalıştırılabilir:
wp --path=/home/kullanici/public_html cron event run --due-now
--path WordPress dizinini, --due-now ise zamanı gelmiş görevlerin çalıştırılacağını belirtir.
Cron tanımında wp yerine sunucunuzdaki doğrulanmış tam çalıştırılabilir dosya yolunu kullanın. Komutu site dosyalarına erişebilen uygun sistem kullanıcısıyla çalıştırın.
Komut satırındaki PHP sürümü ve yapılandırması, web sitesinin kullandığı PHP ortamından farklı olabilir. Bu nedenle manuel test ve hata kayıtları önemlidir.
Görevleri çalıştırırken eklentileri atlayan seçenekleri gelişigüzel kullanmayın. İlgili görevlerin işlevleri eklentiler tarafından sağlanıyor olabilir. Ayrıca HTTP ve WP-CLI yöntemlerinden birini ana tetikleyici olarak belirleyin.

Cron Kaç Dakikada Bir Çalıştırılmalı?​

Doğru aralık, işlerin kabul edilebilir gecikmesine ve sunucunun kapasitesine bağlıdır.
İhtiyaçDeğerlendirilebilecek aralık
Dakikalık hassasiyet gereken işler1 dakika, ortam izin veriyorsa
Birkaç dakikalık gecikme kabul edilen görevler5 dakika
Gecikmeye daha toleranslı işlemler10–15 dakika

Bu tablo zorunlu bir standart değildir. Eklentinin çalışma biçimi ve hosting sınırları ayrıca incelenmelidir.
Beş dakikada bir çalışan tetikleyicide, bir görev sıradaki çalışmayı bekleyebilir. Sunucu yükü veya işlem hatası varsa gecikme daha da uzayabilir. Sistem cronu, bütün görevlerin tam saniyesinde tamamlanacağını garanti etmez.
Uzun süren işlerde sonraki çalışmanın öncekiyle çakışmasını önlemek gerekir. cPanel belgeleri de çok sık tanımlanan görevlerin üst üste binerek performansı olumsuz etkileyebileceğini belirtir.

WooCommerce Kullanıyorsanız Kuyrukları da İnceleyin​

WooCommerce ortamında yalnızca standart WP-Cron listesini kontrol etmek yeterli olmayabilir. Bazı arka plan işlemleri Action Scheduler üzerinden yönetilir.
Action Scheduler, WP-Cron ile bağlantılı çalışırken yönetim paneli isteklerinden başlatılan asenkron işlemler gibi başka tetikleme yollarına da sahiptir. Bu nedenle otomatik WP-Cron tetiklemesi kapatıldığında bütün mağaza işlemlerinin aynı şekilde duracağını varsaymayın.
Bekleyen ve başarısız görevleri inceleyin. Özellikle abonelik, webhook veya e-posta işlemlerinde görevin hata kaydı önemlidir.
Büyük kuyruklar için Action Scheduler’ın ayrı WP-CLI komutları bulunur. Standart WordPress cron görevlerini çalıştırmakla bu kuyruğu doğrudan yönetmek aynı işlem değildir.

Kurulumun Çalıştığı Nasıl Doğrulanır?​

Özel bir test yazısını birkaç dakika sonrasına zamanlayın. Otomatik tetikleme kapalıyken, sistem cronunun çalışmasını bekleyerek yazının yayımlanıp yayımlanmadığını kontrol edin.
WP-CLI erişiminiz varsa görev listesini görüntüleyebilirsiniz:
wp --path=/home/kullanici/public_html cron event list
Bu komut zamanlanmış görevlerin listesini verir. Listedeki bir görevin bulunması, son çalışmasının başarılı olduğunu tek başına göstermez.
Panelden incelemek için WP Crontrol kullanılabilir. Eklenti görevleri görüntüleme, düzenleme ve elle çalıştırma gibi işlevler sunar. Ancak görevi elle çalıştırmak, sunucudaki zamanlayıcının doğru kurulduğunu kanıtlamaz.

Sık Karşılaşılan Sorunlar​

BelirtiKontrol edilecek nokta
HTTP isteği 403 dönüyorWAF, erişim kuralı veya IP kısıtlaması
Komut bulunamıyorÇalıştırılabilir dosyanın tam yolu
WP-CLI WordPress’i bulamıyor--path ve dosya izinleri
Görevler gecikiyorCron aralığı, kuyruk ve sunucu yükü
Yalnızca bir görev başarısızİlgili eklentinin hata kaydı
Görevler üst üste biniyorÇalışma süresi ve eş zamanlılık kontrolü

Güvenlik kuralı sorunu varsa bütün korumayı kapatmak yerine ilgili isteğin neden engellendiğini araştırın.
İlk kurulumda >/dev/null 2>&1 kullanmak hata mesajlarını da gizler. Sessiz çalışma tercih edilecekse hataları ayrıca izleyebileceğiniz bir kayıt düzeni oluşturun.

WordPress 6.9’daki Değişiklik Ne Sağladı?​

WordPress 6.9’da normal cron tetiklemesi init yerine shutdown aşamasına taşındı. Resmi performans notları, bu değişikliğin cron başlatılırken oluşabilen TTFB gecikmesini azaltmayı hedeflediğini açıklar.
Bu iyileştirme, WP-Cron’u sürekli çalışan bir sistem zamanlayıcısına dönüştürmez. Trafikten bağımsız tetikleme ihtiyacı bulunan sitelerde harici zamanlayıcı yine değerlendirilebilir.

Sıkça Sorulan Sorular​

WP-Cron’u kapatmak siteyi kesin hızlandırır mı?​

Hayır. Sonuç, cronun mevcut yüküne ve görevlerin maliyetine bağlıdır. Öncesi ve sonrası ölçüm yapılmalıdır.

Yalnızca DISABLE_WP_CRON eklemek yeterli mi?​

Görevlerin çalışmaya devam etmesi için doğrulanmış bir dış tetikleyici gerekir. Harici zamanlayıcı olmadan otomatik tetiklemeyi kapatmayın.

wp-cron.php dosyasını silebilir miyim?​

Sistem cronuna geçiş için dosyayı silmeniz gerekmez. HTTP yöntemi bu dosyayı kullanır.

Kurulumdan sonra boş sayfa görmek normal mi?​

wp-cron.php görünür bir içerik üretmeyebilir. Boş yanıt, görevlerin başarılı çalıştığını tek başına göstermez.

Sorun çıkarsa nasıl geri dönerim?​

Eklediğiniz DISABLE_WP_CRON tanımını kaldırın veya mevcut değerini false yapın. Harici cron işini de durdurup görevlerin çalışma durumunu yeniden kontrol edin.

Cron aralığını kısaltmak bütün gecikmeleri çözer mi?​

Hayır. Hatalı veya ağır bir görev daha sık tetiklendiğinde yük artabilir. Önce gecikmenin kaynağını bulun.
 

Benzer Konular

3 konu
Geri
Üst