WordPress'in varsayılan wp-cron.php çalışma mantığı, sitene her ziyaretçi geldiğinde arka planda "Yapılacak bir iş var mı?" diye kontrol etmektir. Düşük trafikli sitelerde bu sorun olmazken, yüksek trafikli sitelerde veya tam tersi, hiç ziyaretçisi olmayan sitelerde ciddi sorunlara yol açar:
-
Performans Kaybı: Her sayfa yüklemesinde cron kontrolü yapmak sunucuya gereksiz yük bindirir.
-
Güvenlik Riski:
wp-cron.phpdosyası dışarıdan tetiklenebildiği için kötü niyetli kişiler buraya sahte istekler göndererek siteni yavaşlatabilir (DoS saldırısı). -
Zamanlama Hataları: Eğer sitene kimse girmezse, zamanlanmış yazılar paylaşılmaz veya yedekleme işlemleri başlamaz.
İşte bu sorunu kökten çözecek "Gerçek Cron" yapılandırması:
Adım 1: WordPress İçindeki Cron'u Devre Dışı Bırak
Önce WordPress'in her ziyaretçide cron'u kontrol etmesini engellemeliyiz. Bunun için wp-config.php dosyana şu satırı ekle:
define( 'DISABLE_WP_CRON', true );
Adım 2: Sunucu Üzerinden Manuel Cron Oluştur
Şimdi sunucunun (Plesk veya cPanel) bu işlemi her 5 veya 10 dakikada bir otomatik yapmasını sağlayacağız.
Plesk Panel Kullanıyorsan:
-
Websiteleri ve Etki Alanları > Zamanlanmış Görevler (Scheduled Tasks) kısmına gir.
-
Görev Ekle de.
-
Görev Türü: "PHP Betiği Yürüt" seçeneğini seç.
-
Dosya Yolu:
httpdocs/wp-cron.phpdosyasını göster. -
PHP Sürümü: Sitenin kullandığı PHP sürümünü seç.
-
Zamanlama: "Dakika Başına" seçip
*/5(her 5 dakika) veya*/10yapabilirsin.
cPanel Kullanıyorsan (Cron Jobs):
Aşağıdaki komutu "Common Settings" kısmından her 5 dakikada bir çalışacak şekilde ayarla:
wget -q -O - https://siteniz.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1
Güvenlik İçin Ekstra Önlem (.htaccess)
Eğer gerçek cron kurulumunu yaptıysan, dışarıdan gelen botların veya saldırganların bu dosyayı manuel tetiklemesini engelleyebilirsin. .htaccess dosyana şunu ekle:
# wp-cron.php dış erişim engelleme
<Files wp-cron.php>
order allow,deny
deny from all
# Eğer sunucu IP'ni biliyorsan (isteğe bağlı):
# allow from 1.2.3.4
</Files>
