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.
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:
- WordPress’in kurulu olduğu dizin.
- Kullanılacak tetikleme yöntemi.
- Hosting paketinin izin verdiği en kısa cron aralığı.
- Görevlerin kabul edilebilir gecikme süresi.
- Hata çıktılarının nasıl izleneceği.
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çimi | Kontrol edilmesi gereken nokta |
|---|---|---|
| curl | wp-cron.php adresine HTTP isteği gönderir. | DNS, HTTPS, yönlendirme ve güvenlik kuralları |
| wget | Aynı adrese HTTP isteği gönderebilir. | Komutun kullanılabilirliği ve hata çıktıları |
| WP-CLI | WordPress 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.comyerine kendi alan adınızı yazın.- WordPress bir alt dizindeyse doğru yolu kullanın.
/usr/bin/curlyolunu sunucunuzdaki gerçek komut yoluyla doğrulayın.- Adresin doğrudan doğru HTTPS adresine ulaştığından emin olun.
/blog/ altında kuruluysa hedef adres şöyle olabilir:https://ornek.com/blog/wp-cron.phpKomuttaki
--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:
| Alan | Değ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 sonrawp-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şler | 1 dakika, ortam izin veriyorsa |
| Birkaç dakikalık gecikme kabul edilen görevler | 5 dakika |
| Gecikmeye daha toleranslı işlemler | 10–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 listBu 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
| Belirti | Kontrol edilecek nokta |
|---|---|
| HTTP isteği 403 dönüyor | WAF, 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 gecikiyor | Cron 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 tetiklemesiinit 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ğinizDISABLE_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.
