LIONFIN
cPanel Hosting

cPanel Cron Job Oluşturma: Zamanlanmış Görevler

5 dk okuma Güncelleme: 8 görüntülenme
cPanel Cron Job Oluşturma: Zamanlanmış Görevler

Her gece veritabanı yedeği almak, saatte bir stok dosyasını içeri aktarmak ya da WordPress’in zamanlanmış yazılarını ziyaretçi beklemeden yayınlamak: bunların hepsi tek bir araçla çözülür. cPanel cron job tanımı, belirlediğiniz komutu belirlediğiniz zamanda sunucunun kendisinin çalıştırmasını sağlar; siz uyurken de iş görür.

LIONFIN cPanel hosting paketlerinde Cron Jobs aracı standart olarak açıktır. Bu rehberde zaman ifadesinin mantığını, PHP betiği ve URL çağırma komutlarını, çıktı ve e-posta bildirimi yönetimini, WordPress’e özel kullanımı ve görev çalışmadığında bakılacak yerleri anlatıyoruz.

Cron zaman ifadesi nasıl okunur?

Bir cron satırı beş zaman alanı ve bir komuttan oluşur. Alanlar soldan sağa dakika, saat, ayın günü, ay ve haftanın günüdür; * “her” anlamına gelir.

┌ dakika (0-59)
│ ┌ saat (0-23)
│ │ ┌ ayın günü (1-31)
│ │ │ ┌ ay (1-12)
│ │ │ │ ┌ haftanın günü (0-6, 0 = Pazar)
│ │ │ │ │
* * * * *  komut
İfadeAnlamı
*/15 * * * *Her 15 dakikada bir
0 * * * *Her saat başı
30 3 * * *Her gece 03:30
0 4 * * 1Her Pazartesi 04:00
0 0 1 * *Her ayın 1’i gece yarısı

cPanel ekranındaki Common Settings listesi bu ifadeleri hazır sunar; ilk denemelerde oradan seçmek yazım hatasını önler. Görevler sunucu saatiyle çalışır; sunucunun saat dilimini öğrenmek için date komutunu tek seferlik bir görev olarak ekleyip çıktıyı e-postayla alın, Türkiye saatinden farklıysa saatleri buna göre kaydırın.

cPanel cron job oluşturma adımları

Görev tanımlamak için:

  1. cPanel’de Advanced → Cron Jobs ekranını açın.
  2. Cron Email alanına bildirim adresinizi yazıp Update Email deyin; her çalıştırmanın çıktısı bu adrese gider.
  3. Add New Cron Job bölümünde Common Settings listesinden bir sıklık seçin ya da beş alanı elle doldurun.
  4. Command alanına çalıştırılacak komutu tam yollarla yazın (örnekler aşağıda).
  5. Add New Cron Job düğmesine basın; görev sayfanın altındaki Current Cron Jobs tablosunda görünür.

Tablodaki Edit ve Delete bağlantılarıyla görevleri düzenler ya da kaldırırsınız. Aynı komutu iki kez eklemeyin; iki görev çakışırsa veritabanı kilitleri ve çift gönderilen e-postalar ortaya çıkar. Bir görevi geçici olarak durdurmak istiyorsanız silmeden önce komutu bir metin dosyasına kopyalayın; yeniden eklemek saniyeler sürer. Sunucuda SSH erişiminiz varsa crontab -l komutu aynı listeyi terminalde gösterir, crontab -e ile de düzenleyebilirsiniz.

Komut örnekleri: PHP betiği, URL çağırma ve yedek

En yaygın üç kalıp:

# 1) PHP betiğini doğrudan çalıştırma (en verimli yol)
/usr/local/bin/php /home/kullanici/public_html/gorevler/temizlik.php

# 2) Bir URL’yi çağırma (uygulama yalnızca web üzerinden tetikleniyorsa)
curl -s -o /dev/null siteniz.com/cron.php?anahtar=GIZLI

# 3) Gece veritabanı yedeği
mysqldump -u kullanici_db -pSIFRENIZ kullanici_db | gzip > /home/kullanici/yedek/db-$(date +\%F).sql.gz

Dikkat edilecek noktalar:

  • Her zaman tam yol kullanın; cron ortamında PATH değişkeni kısıtlıdır. PHP ikilisinin yolunu which php ile ya da MultiPHP sürümüne özel /opt/cpanel/ea-php83/root/usr/bin/php biçiminde belirleyin; sürüm seçimi cPanel PHP sürümü değiştirme rehberinde.
  • Cron içinde % özel karakterdir; tarih biçimlerinde \% olarak kaçırın.
  • URL ile tetiklenen betikleri gizli bir anahtarla koruyun; aksi hâlde herkes çağırabilir.
  • Yedek komutlarının yazacağı klasör public_html dışında olsun; yedekleme yaklaşımı cPanel yedek alma yazısında.

Çıktı ve e-posta bildirimlerini yönetme

Cron, komutun ürettiği her satırı Cron Email adresine gönderir. Dakikada bir çalışan bir görev günde 1440 e-posta demektir; kutunuz dolar ve önemli hatalar gözden kaçar. Üç seçenek:

Komut sonuna eklenenEtkisi
>/dev/null 2>&1Tüm çıktıyı ve hataları yok sayar; hiç e-posta gelmez
>/dev/nullYalnızca hataları e-postayla gönderir (önerilen)
>> /home/kullanici/logs/cron.log 2>&1Her şeyi bir günlük dosyasına ekler; sonradan inceleyebilirsiniz

Örnek: /usr/local/bin/php /home/kullanici/public_html/gorev.php >/dev/null. Günlük dosyası tutuyorsanız büyümesini izleyin; aylık temizleyen bir görev ekleyin, yoksa disk kotası sessizce dolar. Bildirim adresi olarak sık kontrol ettiğiniz bir kutuyu seçin; hata mesajlarının spam klasörüne düşmemesi için gönderen adresi beyaz listeye alın.

WordPress ve wp-cron için gerçek zamanlayıcı

WordPress zamanlanmış görevleri (yazı yayını, yedek eklentileri, WooCommerce e-postaları) varsayılan olarak wp-cron.php ile çalışır ve ancak siteye biri girdiğinde tetiklenir. Ziyaretçisi az bir sitede görevler gecikir, yoğun sitede ise her sayfa açılışında ek yük oluşur. Çözüm iki adımdır:

  1. wp-config.php dosyasına şu satırı ekleyin: define("DISABLE_WP_CRON", true);
  2. cPanel’de her 5 dakikada bir çalışan şu görevi tanımlayın:
*/5 * * * * /usr/local/bin/php /home/kullanici/public_html/wp-cron.php >/dev/null

Böylece görevler ziyaretçiden bağımsız, düzenli aralıklarla çalışır. Aynı yöntem Laravel için de geçerlidir: * * * * * /usr/local/bin/php /home/kullanici/proje/artisan schedule:run >/dev/null satırı çerçevenin kendi zamanlayıcısını dakikada bir uyandırır. WordPress kurulumu henüz yapılmadıysa cPanel WordPress kurulumu rehberinden başlayın. Çok sayıda ağır görev çalıştıran projeler paylaşımlı sunucunun işlemci limitine takılabilir; bu noktada VPS sunucu ile kendi cron ortamınızı kurmak daha sağlıklı olur.

Cron çalışmıyorsa: kontrol listesi

cPanel cron job tanımlı ama sonuç yoksa şu sırayla bakın:

Komut elle çalışıyor mu?

SSH erişiminiz varsa komutu terminalde aynen çalıştırın; hata mesajı doğrudan görünür. SSH yoksa çıktıyı günlük dosyasına yönlendirip dosyayı Dosya Yöneticisi’nden okuyun.

Yol ve izin hataları

“No such file or directory” yol hatasıdır; “Permission denied” ise betiğin okunma izni yoktur, dosya iznini 644, betik klasörünü 755 yapın.

Sıklık limiti

Paylaşımlı sunucularda dakikada birden sık çalışan görevler kısıtlanabilir; gerçekten gerekmiyorsa 5 dakikalık aralık seçin.

Görev çalışıyor ama uygulama tepki vermiyor

Betik web ile aynı PHP sürümünde çalışmıyor olabilir; sürüme özel PHP yolunu kullanın. URL çağıran görevlerde de curl yerine tam yolla /usr/bin/curl yazın.

E-posta gelmiyor

Komutun sonunda 2>&1 ile hataları da yok saymış olabilirsiniz; geçici olarak yönlendirmeyi kaldırın.

Sık Sorulan Sorular

Cron job en sık ne kadar aralıkla çalışabilir?

Cron’un teknik alt sınırı bir dakikadır. Paylaşımlı hosting sunucularında kaynakları korumak için dakikada birden sık çalışan görevler kısıtlanabilir; çoğu senaryo için beş ya da on beş dakikalık aralık yeterlidir. Saniye düzeyinde tetikleme gerekiyorsa görevin kendisini uzun süre çalışan bir döngü olarak tasarlayın.

Cron görevi çalışırken siteyi yavaşlatır mı?

Görevin ne yaptığına bağlıdır. Tam yedek ya da büyük içe aktarma gibi disk ve işlemci yoğun işler birkaç dakika boyunca yavaşlamaya yol açabilir; bu yüzden ağır görevleri gece saatlerine planlayın. Küçük temizlik ve senkron betikleri fark edilir bir etki yaratmaz.

Sunucu saati Türkiye saatinden farklıysa ne yapmalıyım?

Cron ifadeleri sunucu saatine göre yorumlanır. Farkı öğrenmek için date komutunu tek seferlik görev olarak ekleyip çıktıyı e-postayla alın; ardından istediğiniz Türkiye saatini fark kadar kaydırarak yazın. PHP betiklerinin içinde ise date_default_timezone_set ile İstanbul saat dilimini ayarlayabilirsiniz.

Cron Jobs aracı panelimde görünmüyor, ne yapmalıyım?

Araç paketinize göre kapalı olabilir. Müşteri panelinden destek talebi açarak çalıştırmak istediğiniz komutu ve sıklığı bildirin; ekip görevi sizin adınıza tanımlar ya da paketinizde aracı etkinleştirir. Alternatif olarak WordPress eklentileri gibi uygulama içi zamanlayıcılar da kullanılabilir.

Bu makale yardımcı oldu mu?

Geri bildiriminiz için teşekkürler!

kişi faydalı buldu

Paylaş

X LinkedIn WhatsApp

Sorunuz mu var? Destek ekibimize yazın.