Hosting Paketlerinde %80 indirim + Ücretsiz Domain & SSL!
Detaylar

Bilgi Bankası

Cron job (zamanlanmış görev) oluşturma

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.

Cron işi ekleme

cPanelGelişmişCron İşleri

  1. Bildirim adresini belirleyin. Cron E-postası (Cron Email) alanına yazdığınız adrese, çıktı üreten her çalışmanın sonucu e-postayla gelir. Çıktıyı susturacaksanız bu alanı değiştirmeniz gerekmez.
  2. Zamanlamayı seçin. Ortak Ayarlar (Common Settings) listesinden "saatte bir", "günde bir" gibi hazır bir seçenek seçin ya da dakika, saat, gün, ay ve hafta içi gün alanlarını kendiniz doldurun.
  3. Komutu yazın. Komut (Command) alanına çalıştırılacak komutu tam yollarıyla yazın.
  4. Kaydedin. Yeni Cron İşi Ekle (Add New Cron Job) düğmesine tıklayın. Tanımlı işleri sayfanın altındaki listeden düzenleyebilir veya silebilirsiniz.
AlanDeğer aralığıÖrnek ve anlamı
Dakika (Minute)0–59*/15: her 15 dakikada bir
Saat (Hour)0–233: saat 03:00'te
Gün (Day)1–311: 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.

Doğru komutu yazmak

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.

Çıktıyı yönetmek

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

Sıklık ve kaynak kullanımı

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

Cron çalışmıyorsa

BelirtiOlası nedenÇözüm
E-postada Could not open input fileBetik yolu yanlışYolu Ana Dizin bilgisinden başlayarak yeniden yazın
E-postada Permission deniedKomutun başında PHP yolu yok, dosya doğrudan çalıştırılmaya çalışılıyorKomutun başına /usr/local/bin/php ekleyin
Betik tarayıcıdan çalışıyor, cron'da çalışmıyorGö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ıyorCron 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

Aradığınızı bulamadınız mı?

Destek ekibimiz yardımcı olsun; taleplere en geç 24 saat içinde ilk yanıt veriyoruz.

Destek talebi oluşturun
Bu makale işinize yaradı mı?

0 defa görüntülendi | 0 kişi faydalı buldu

0850 532 67 10 908505326710