Hosting'de cron görevi ekleme: PHP betiği zamanlama (adım adım)
Cron, bir komutu ya da betiği belirli zamanlarda otomatik çalıştıran sunucu zamanlayıcısıdır: her gece yedek almak, her 5 dakikada kuyruğu işlemek, her pazartesi rapor göndermek gibi işler için. Hosting panelimizden PHP betiklerinizi kendiniz zamanlayabilirsiniz.
Görev ekleme
- Hosting panelinde üst menüden CRON bölümüne gidin.
- Cron Görevi Ekle'ye tıklayın.
- Form alanlarını doldurun: Dakika, Saat, Gün (ayın günü), Ay, Haftanın Günü ve Komut.
- Kaydedin; görev hemen zamanlanır.
Zaman alanları
Her alan ya bir sayıdır, ya * (her biri), ya */5 (her 5 birimde bir) ya da virgülle ayrılmış liste (1,15) olur:
- Her 5 dakikada bir: Dakika
*/5, diğerleri* - Her saat başı: Dakika
0, Saat* - Her gece 03:30: Dakika
30, Saat3, diğerleri* - Her pazartesi 09:00: Dakika
0, Saat9, Haftanın Günü1(0 ya da 7 pazar, 1 pazartesi) - Ayın 1'inde gece yarısı: Dakika
0, Saat0, Gün1
Saat dilimi sunucunun saat dilimidir; zamanlamayı buna göre düşünün.
Komut yazımı
PHP betiği çalıştırmak için PHP'nin yolunu ve betiğin tam yolunu yazın. Hosting hesabınızda sitenizin dosyaları şu klasördedir: /home/KULLANICI/web/ornek.com/public_html/ (kullanıcı adınız ve alan adınızla değiştirin; kullanıcı adınızı hosting bilgilerinizde bulursunuz). PHP komut satırı programı /usr/bin/php konumundadır:
/usr/bin/php /home/KULLANICI/web/ornek.com/public_html/cron.php
Komutta göreli yol kullanmayın (php cron.php); cron betiğinizin bulunduğu klasörden başlamaz. Bir web adresini çağırmak daha kolaysa:
curl -s https://ornek.com/cron.php > /dev/null
Çıktıyı /dev/null'a yönlendirmezseniz cron her çalışmasında çıktıyı mail ile göndermeye çalışabilir. Çıktıyı bir dosyaya yazdırmak isterseniz: ... >> /home/KULLANICI/web/ornek.com/private/cron.log 2>&1 (log dosyası private klasöründe olsun ki herkese açık olmasın).
Sınırlar
- Paketinizde en fazla 10 cron görevi tanımlayabilirsiniz.
- Çok sık çalışan (her dakika) ağır görevler kaynak kotanızı yer. Gerçekten gerekmedikçe 5 dakikada bir yeterlidir.
- Görev kullanıcı olarak çalışır; yalnızca kendi klasörlerinize erişebilir.
Çalışmıyorsa
- Komutu elle deneyin: Terminal erişimi olmadığı için aynı betiği bir kez tarayıcıdan çağırarak (eğer web üzerinden çağrılabiliyorsa) hata verip vermediğine bakın.
- Yolu kontrol edin: Kullanıcı adı ve alan adı doğru yazılmış mı? Dosya orada mı? Dosya yöneticisinde yolu doğrulayın.
- Betik kendi kendine hata veriyor: Çıktıyı bir dosyaya yönlendirip içine bakın (yukarıdaki örnek); PHP hataları da orada görünür.
- WordPress için:
wp-cron.php'yi zamanlarken ayrıntı için: WordPress gerçek cron. - Zamanlama anlamı:
0 */2 * * *iki saatte bir saat başıdır; sık yapılan hata, dakika alanına*yazıp "her dakika çalışıyor" şaşkınlığı yaşamaktır.
VDS'te aynı işi crontab -e ile yaparsınız: cron makalesi. Windows için: Görev Zamanlayıcı. Paketlerimiz: Web Hosting.
Sık sorulanlar
Cron görevi çalışınca bana mail gelir mi?
Panel, cron çıktısını mail ile bildirme seçeneği sunabilir; çıktıyı /dev/null'a yönlendirirseniz bildirim gelmez. İhtiyaç duyduğunuz durumda çıktıyı bir dosyaya yazdırmak daha kontrollüdür.
Görev ne zaman çalışacak?
Zamanlama alanlarında belirttiğiniz dakikada. Yeni eklenen görev bir sonraki eşleşen dakikada çalışır; hemen çalışmaz.
Cron ile PHP dışında bir komut çalıştırabilir miyim?
Paket kısıtları dahilinde evet; ancak hosting hesabında kabuk (terminal) erişimi olmadığı için komutlar yalnızca sitenizin dosyalarına dokunmalıdır. Ağır işler için VDS uygundur.
İlgili makaleler
- Zamanlanmış görev (cron) nasıl eklenir?
- WordPress wp-cron.php: zamanlanmış görevler çalışmıyor ya da sunucuyu yoruyor
- Hosting paneline nasıl girerim? Panel bilgilerim nerede?
Sorununuz çözülmediyse destek talebi açın. Hangi adımı denediğinizi ve ekranda ne gördüğünüzü yazarsanız çözüm çok daha hızlı olur.
Geri bildiriminiz için teşekkürler!