Kısaca: cPanel'deki Cron İşleri (Cron Jobs) sayfasından bir komutun belirli aralıklarla otomatik çalışmasını sağlarsınız. PHP betikleri için komut /usr/local/bin/php /home/kullanici/public_html/cron.php biçimindedir; kullanici yerine kendi cPanel kullanıcı adınızı yazın. Çıktıyı >/dev/null 2>&1 ile susturun ve gerçekten gerekmedikçe her dakika çalışan görev tanımlamayın.
cPanelGelişmişCron İşleri
| Alan | Değer aralığı | Örnek ve anlamı |
|---|---|---|
| Dakika (Minute) | 0–59 | */15: her 15 dakikada bir |
| Saat (Hour) | 0–23 | 3: saat 03:00'te |
| Gün (Day) | 1–31 | 1: ayın 1'inde |
| Ay (Month) | 1–12 | *: her ay |
| Hafta içi gün (Weekday) | 0–6 (0 = Pazar) | 1-5: pazartesiden cumaya |
* "her" anlamına gelir; virgülle liste (1,15), tireyle aralık (1-5), eğik çizgiyle aralıklı tekrar (*/10) yazılır. Örnekler: her saat başı 0 * * * *, her gece 03:30 30 3 * * *, hafta içi her sabah 08:00 0 8 * * 1-5.
Komutta her zaman tam yol kullanın. Ev dizininizin yolunu cPanel ana sayfasındaki Genel Bilgiler (General Information) bölümünde, Ana Dizin (Home Directory) satırında görürsünüz; yol hesaptan hesaba değişir.
/usr/local/bin/php /home/kullanici/public_html/cron.php >/dev/null 2>&1
/usr/local/bin/php çoğu durumda hesabınız için seçili PHP sürümüyle çalışır. Betiğiniz belirli bir sürüm gerektiriyorsa o sürümün tam yolunu yazın; örnekteki 82'yi (PHP 8.2) kendi sürümünüze göre değiştirin:
# Select PHP Version (CloudLinux) sürümleri
/opt/alt/php82/usr/bin/php /home/kullanici/public_html/cron.php >/dev/null 2>&1
# MultiPHP sürümleri
/opt/cpanel/ea-php82/root/usr/bin/php /home/kullanici/public_html/cron.php >/dev/null 2>&1
Cron'un hangi sürümle çalıştığından emin değilseniz bir kez çalışacak geçici bir iş tanımlayıp sonucu dosyaya yazdırın, dosyayı okuduktan sonra işi ve dosyayı silin:
/usr/local/bin/php -v > /home/kullanici/php-surum.txt 2>&1
Betik include 'ayarlar.php' gibi göreli yollar kullanıyorsa önce klasörüne geçin: cd /home/kullanici/public_html && /usr/local/bin/php cron.php >/dev/null 2>&1. Uygulamanız cron için bir adres veriyorsa curl -s "https://alanadiniz.com/cron.php" >/dev/null 2>&1 biçimi de çalışır; bu durumda istek web sunucusu üzerinden gider ve zaman aşımı sınırlarına tabidir.
Dikkat: Cron komutlarında % karakteri satır sonu anlamına gelir. Komutunuzda tarih biçimi gibi bir yerde % geçiyorsa \% olarak yazın; örneğin date +\%Y-\%m-\%d.
Komutun sonuna eklenen >/dev/null 2>&1, hem normal çıktıyı hem de hata çıktısını atar. Eklemezseniz çıktı üreten her çalışma Cron E-postası adresine bir ileti gönderir; 5 dakikada bir çalışan bir iş günde 288 e-posta demektir ve posta kutunuzu kısa sürede doldurur.
Bir işin neden çalışmadığını araştırırken çıktıyı atmak yerine bir günlük dosyasına yazdırın, sorunu çözünce eski hâline döndürün. Günlük dosyasını public_html dışında tutun:
/usr/local/bin/php /home/kullanici/public_html/cron.php >> /home/kullanici/cron.log 2>&1
Her çalışma yeni bir PHP süreci başlatır ve hesabınızın CPU, bellek ve süreç sınırlarından pay alır. Her dakika çalışan ağır bir iş siteyi yavaşlatabilir ya da 508 hatasına yol açabilir; iş, bir sonraki çalışma zamanından uzun sürerse çalışmalar üst üste biner. İhtiyacınızı karşılayan en seyrek aralığı seçin: kuyruk işleme gibi görevler için 5–15 dakika genellikle yeterlidir, rapor ve temizlik gibi ağır işleri gece saatlerine koyun. Tüm işleri tam saat başına toplamak yerine dakikaları dağıtın (ör. 17 3 * * *).
WordPress'in her ziyarette tetiklenen zamanlayıcısını kapatıp gerçek cron'a bağlamak hem yükü azaltır hem de zamanlanmış gönderilerin vaktinde yayınlanmasını sağlar. wp-config.php dosyasına şu satırı ekleyin:
define( 'DISABLE_WP_CRON', true );
Ardından 15 dakikada bir (*/15 * * * *) çalışan şu cron işini tanımlayın:
/usr/local/bin/php /home/kullanici/public_html/wp-cron.php >/dev/null 2>&1
| Belirti | Olası neden | Çözüm |
|---|---|---|
E-postada Could not open input file | Betik yolu yanlış | Yolu Ana Dizin bilgisinden başlayarak yeniden yazın |
E-postada Permission denied | Komutun başında PHP yolu yok, dosya doğrudan çalıştırılmaya çalışılıyor | Komutun başına /usr/local/bin/php ekleyin |
| Betik tarayıcıdan çalışıyor, cron'da çalışmıyor | Göreli yol kullanımı ya da farklı PHP sürümü | Önce cd ile klasöre geçin; gerekirse sürümün tam yolunu yazın |
| İş beklenen saatte çalışmıyor | Cron sunucunun saat dilimine göre çalışır; komutta kaçışsız % olabilir | Çıktıyı günlük dosyasına yazdırıp çalışma saatini kontrol edin; % işaretlerini \% yapın |
Destek ekibimiz yardımcı olsun; taleplere en geç 24 saat içinde ilk yanıt veriyoruz.
Destek talebi oluşturun