WordPress Cron Optimizasyonu: WordPress Cron Nedir ve Neden Sorun Yaratır?
WordPress, zamanlanmış görevleri yönetmek için wp-cron.php adında kendi dahili bir “cron” sistemini kullanır. Ancak bu sistemin en büyük dezavantajı, sitenizi birisi ziyaret ettiğinde tetiklenmesidir. Sunucunuzda onlarca site barındırıyorsanız, bu durum yüzlerce gereksiz PHP işlemi başlatarak yüksek CPU ve RAM kullanımına yol açar, PHP-FPM havuzlarını yorar ve genel sunucu performansını düşürür.
Bu rehber, bu karmaşayı ortadan kaldırıp, tüm sitelerinizin cron görevlerini tek bir merkezden, belirli aralıklarla ve çok daha verimli bir şekilde çalıştırarak sunucunuzu rahatlatmayı amaçlamaktadır.
Bu Rehber Kimler İçin Uygundur?
Bu çözüm, WHM (Web Host Manager) erişimi olan VDS/VPS veya Dedicated sunucu sahipleri içindir.
Adım Adım WordPress Cron Optimizasyonu
Adım 1: Mevcut cPanel Cron İşlerini Tamamen Devre Dışı Bırakın (KRİTİK!)
Yeni sisteme geçmeden önce eski sistemi tamamen durdurmalıyız.
-
Sunucunuzdaki her bir WordPress sitenizin cPanel hesabına giriş yapın.
-
“Gelişmiş” (Advanced) bölümünde bulunan “Cron İşleri” (Cron Jobs) ikonuna tıklayın.
-
wp-cron.php dosyasını çalıştıran satırı bulun ve yanındaki “Sil” (Delete) butonuna tıklayarak bu cron işini kaldırın.
-
Bu işlemi tüm WordPress siteleriniz için tek tek tekrarlayın.
Adım 2: Doğru PHP Yolunu Öğrenin
Oluşturacağımız script’in doğru çalışması için, sunucunuzun kullandığı PHP’nin tam yolunu bilmemiz gerekir. Bu yol sunucudan sunucuya değişebilir.
-
Herhangi bir sitenizin cPanel > Cron İşleri bölümüne (az önce sildiğiniz yere) geri dönün.
-
“Yeni Bir Cron İşi Ekle” (Add New Cron Job) bölümündeki “Genel Ayarlar” (Common Settings) kısmından herhangi bir zaman seçin.
-
“Komut” (Command) kutusuna php -q /home/kullaniciadiniz/public_html/wp-cron.php gibi basit bir komut yazın. cPanel genellikle php kelimesini otomatik olarak sunucunuzun tam yoluna çevirir. Örneğin:
-
/usr/local/bin/ea-php83
-
/opt/cpanel/ea-php82/root/usr/bin/php
-
-
Bu tam yolu bir not defterine kopyalayın. Az sonraki adımda bu yola ihtiyacımız olacak. (Cron işini kaydetmenize gerek yok).
Adım 3: WHM Üzerinden Terminale Erişin ve Merkezi Script’i Oluşturun
-
https://sunucu-ipadresiniz:2087 adresinden WHM’ye root olarak giriş yapın.
-
Sol üstteki arama kutusuna “Terminal” yazın ve tıklayın.
-
Aşağıdaki komutu terminale yapıştırıp Enter‘a basın:
nano /root/toplu_wp_cron.sh -
Açılan boş nano ekranına aşağıdaki güncellenmiş ve hatasız kodun tamamını kopyalayıp yapıştırın.
#!/bin/bash # --- BURAYI DÜZENLEYİN --- # Adım 2'de öğrendiğiniz PHP yolunu aşağıdaki tırnakların arasına yazın. PHP_YOLU="/usr/local/bin/ea-php83" # ------------------------- # Sunucudaki public_html klasörü olan tüm cPanel kullanıcılarını bul for user in $(ls /var/cpanel/users); do # Kullanıcının ana dizinini al homedir=$(eval echo ~$user) # Eğer kullanıcının public_html dizininde bir wp-config.php dosyası varsa if [ -f "$homedir/public_html/wp-config.php" ]; then # WordPress cron'unu o cPanel kullanıcısı adına ve dosyanın TAM YOLUNU belirterek çalıştır. echo "Cron çalıştırılıyor: $user - $homedir/public_html" su -c "$PHP_YOLU -q $homedir/public_html/wp-cron.php" $user fi done echo "Tüm siteler için cron işlemleri tamamlandı." -
ÇOK ÖNEMLİ: Yapıştırdığınız kodun en üstündeki PHP_YOLU=”/usr/local/bin/ea-php83″ satırını, Adım 2’de not aldığınız kendi sunucunuzun PHP yolu ile değiştirin.
-
Dosyayı kaydedip kapatmak için: CTRL + X, ardından Y, ve son olarak Enter tuşlarına basın.
Adım 4: Script’i “Çalıştırılabilir” Yapın
Aşağıdaki komutu terminale yapıştırıp Enter‘a basın:
chmod +x /root/toplu_wp_cron.sh
Adım 5: Sunucu Düzeyinde Tek Bir Cron İşi Tanımlayın
Şimdi oluşturduğumuz toplu_wp_cron.sh dosyasını düzenli aralıklarla (örneğin 15 dakikada bir) çalıştıracak olan ana cron işini tanımlayacağız.
- Aşağıdaki komutu terminale yapıştırıp Enter‘a basın:
crontab -e
EĞER EKRANINIZDA ANLAMSIZ KARAKTERLER (örneğin ^@^@^@) GÖRÜRSENİZ VEYA “BAD MINUTE” HATASI ALIRSANIZ:
Bu, daha önceki hatalı bir denemeden kalan kirli bir crontab dosyası olduğu anlamına gelir. Endişelenmeyin, düzeltmesi kolay:
-
-
Açılan nano ekranında, klavyeden CTRL + K tuş kombinasyonuna bir kez basın. Bu, ekrandaki tüm bozuk veya hatalı içeriği silecektir. Ekran tamamen boş olmalı.
-
Şimdi aşağıdaki doğru cron komutunu kopyalayıp boş ekrana yapıştırın ve kaydedip çıkın.
-
-
Açılan boş nano ekranına (veya az önce temizlediğiniz ekrana) aşağıdaki satırı kopyalayıp yapıştırın:
*/15 * * * * /root/toplu_wp_cron.sh > /dev/null 2>&1 -
Dosyayı kaydedip kapatmak için CTRL + X, ardından Y ve Enter tuşlarına basın. Terminalde “crontab: installing new crontab” gibi bir mesaj görmelisiniz.
Adım 6: Kurulumu Doğrulayın
Her şeyin doğru bir şekilde kurulduğundan emin olmak için son bir kontrol yapalım.
- Terminal ekranına aşağıdaki komutu yazıp Enter‘a basın:
crontab -l
```2. Bu komut, `root` kullanıcısı için şu an aktif olan cron işlerini listeler. Ekran çıktısı olarak sadece aşağıdaki satırı görmelisiniz:
*/15 * * * * /root/toplu_wp_cron.sh > /dev/null 2>&1
Eğer bu çıktıyı görüyorsanız, cron optimizasyonunuz başarıyla tamamlanmıştır!
Kurulumu bitirdik, şimdi çalıştığından emin olalım. Terminal ekranına aşağıdaki komutu yazarak script’i manuel olarak çalıştırın:
bash /root/toplu_wp_cron.sh
Bu komutu çalıştırdığınızda karşılaşabileceğiniz iki yaygın hata ve çözümleri şunlardır:
Hata Senaryosu 1: Shell access is not enabled on your account!
Bu, cPanel hesaplarının güvenlik nedeniyle komut çalıştırma yetkisi olmadığını gösterir.
-
Çözüm:
-
WHM’de “Manage Shell Access” bölümüne gidin.
-
Tüm kullanıcıları seçin (en üstteki kutucuğu işaretleyerek).
-
Uygulanacak shell türü olarak “Jailed Shell” seçeneğini işaretleyin. (Bu en güvenli seçenektir).
-
“Apply” butonuna tıklayın.
-
Test komutunu (/root/toplu_wp_cron.sh) tekrar çalıştırın.
-
Hata Senaryosu 2: Could not open input file: wp-cron.php
Bu, script’in wp-cron.php dosyasını bulamadığını gösterir. Bunun sebebi genellikle Adım 3’teki script kodunun eski veya hatalı bir versiyonunu kullanmanızdır.
-
Çözüm:
-
nano /root/toplu_wp_cron.sh komutu ile script’i tekrar açın.
-
İçindeki kodun, yukarıdaki Adım 3’te verdiğim güncel ve hatasız kod ile birebir aynı olduğundan emin olun. Özellikle su -c komutunun içindeki $homedir/public_html/wp-cron.php kısmı dosyanın tam yolunu içermelidir.
-
Gerekirse eski kodu tamamen silip yenisini yapıştırın ve PHP_YOLU‘nu tekrar güncelleyin.
-
Kaydedip çıktıktan sonra test komutunu tekrar çalıştırın.
-
Başarılı Sonuç!
Tüm hataları giderdikten sonra, test komutunu çalıştırdığınızda ekranınızda hiçbir hata mesajı olmadan şuna benzer bir çıktı görmelisiniz:
Cron çalıştırılıyor: site1 - /home/site1/public_html
Cron çalıştırılıyor: site2 - /home/site2/public_html
...
Tüm siteler için cron işlemleri tamamlandı.```
Bonus Optimizasyon: PHP-FPM Ayarları ile Sunucunuza Nefes Aldırın
Cron optimizasyonunu tamamladınız, harika! Peki sunucunuzun potansiyelini daha da yukarı taşımak ister misiniz? PHP-FPM, sitelerinize gelen ziyaretçilere hizmet veren motorun ta kendisidir. Doğru ayarlar, sunucunuzun daha az kaynakla daha fazla iş yapmasını sağlar.
PHP-FPM’i, sitenize gelen her ziyaretçi için çalışan bir ekip gibi düşünün. Bu ayarlar, ekibinizde kaç kişinin olacağını, ne kadar süre mola vereceklerini ve ne zaman paydos edeceklerini belirler.
Önerilen PHP-FPM Ayarları (Ortalama VDS/VPS için)
Aşağıdaki ayarlar, 6 CPU / 10 GB RAM gibi bir VDS sunucusunda barındırılan 50 civarı düşük/orta trafikli site için ideal bir başlangıç noktasıdır.
| Ayar Adı (WHM’deki Karşılığı) | Önerilen Değer | Ne İşe Yarar? (Basitçe) |
| Maksimum Alt İşlem (pm.max_children) | 20 | Aynı anda kaç ziyaretçiye hizmet verileceğini belirler (Açık kasa sayısı). 20 ile başlayıp siteleriniz yavaşlarsa 25-30’a yükseltebilirsiniz. |
| Maksimum Talep (php_admin_value[max_requests]) | 500 | Bir “çalışanın” hafıza sızıntısı yaşamaması için kaç istekten sonra kendini yenileyeceğini belirler (Çalışanın yorulunca mola vermesi). |
| İşlem Boşta Zaman Aşımı (pm.process_idle_timeout) | 30 saniye | Bir “çalışanın” işi bittikten sonra ne kadar süre boşta bekleyeceğini belirler. Süre dolunca paydos eder ve RAM’i serbest bırakır. |
Bu Ayarları WHM’de Nasıl Yaparsınız?
-
WHM ana sayfasında, sol arama menüsüne “MultiPHP Manager” yazın ve tıklayın.
-
Sayfanın üst kısmındaki “System PHP-FPM Configuration” sekmesine gidin.
-
Sitenizin kullandığı PHP sürümünün (örneğin ea-php83) yanındaki “Düzenle” (Edit) butonuna tıklayın.
-
Açılan ekranda yukarıdaki tablodaki değerleri bulun ve önerilen şekilde güncelleyin.
-
Sayfanın en altındaki “Kaydet” (Save) butonuna tıklayın. Değişiklikler anında geçerli olacaktır.
Sonuç: Daha Hızlı ve Stabil Bir Sunucu!
Tebrikler! Hem merkezi cron optimizasyonu hem de akıllı PHP-FPM ayarları ile sunucunuzu tam potansiyeline ulaştırdınız. Artık sunucunuz kaynaklarını çok daha verimli kullanacak, sitelerinizin hızı ve stabilitesi artacak ve beklenmedik CPU/RAM artışlarının önüne geçmiş olacaksınız.
Mustafa Ketanci | Web & Media Specialist