Dokümantasyon menüsü
Site yönetimi

Zamanlanmış görevler

Site kullanıcısı adına çalışan cron görevlerini hazır şablonlarla ekleyin; çıktı bir kayıt dosyasına yazılır.

Zamanlanmış Görevler sayfası.Zamanlanmış Görevler sayfası.

Nasıl çalışır

Zamanlanmış görevleri Site Merkezi → Zamanlanmış Görevler sayfasından ya da bir sitenin Cron sekmesinden yönetirsiniz (bkz. Site Merkezi). Sayfanın üstündeki site seçicisinden hangi sitenin görevlerine bakacağınızı seçersiniz; listede Zamanlama, Komut ve Not sütunları görünür.

Her görev, sitenin Linux kullanıcısının crontab dosyasına panelin işaretlediği bir satır olarak yazılır ve o kullanıcının yetkisiyle çalışır. Panel yalnızca kendi eklediği satırları yönetir. Görevi sonradan düzenleyemezsiniz; değiştirmek için görevi silip yeniden eklersiniz. Aynı zamanlama ve komutla ikinci bir görev eklenemez.

Görevin çalıştığı ortam sitenin kendi ortamıdır: crontab'a, sitenin özel geçici dizinini gösteren bir TMPDIR satırı yazılır ve her görev umask 077 ile başlar. Bu nedenle görevin oluşturduğu dosyalar yalnızca site kullanıcısı tarafından okunabilir.

Görev ekleme

Yeni Görev düğmesi üç adımlı bir sihirbaz açar: Görev şablonu, Zamanlama ve Onayla. Son adımda panel, çalıştıracağı komutu Ne çalışacak başlığı altında gösterir. İsterseniz göreve bir not yazabilirsiniz (örneğin "WordPress zamanlanmış görev"); not yalnızca listede görünür. Görevi ekle ile görev crontab'a yazılır. Silmek için satırdaki sil simgesini kullanırsınız; panel "Bu cron görevi silinsin mi?" diye onay ister.

Panel komutu sizin yerinize oluşturur, elle komut yazmanız gerekmez. Komutlardaki PHP yolu, sitenin PHP sürümüne bağlı bir bağlantıdır; sitenin PHP sürümünü değiştirdiğinizde görevler de otomatik olarak yeni sürümle çalışır (bkz. PHP sürümü ve ayarları). Listede görevin yanında "PHP 8.4" gibi bir rozet bu bağı gösterir.

Hazır görev şablonları

  • WordPress cron — sitenin wp-cron.php dosyasını zamanlanmış aralıklarla tetikler. WordPress'in ziyaretçi isteğiyle tetiklediği zamanlayıcıyı kapatıp gerçek bir cron kullanmak için wp-config.php dosyasına define('DISABLE_WP_CRON', true); satırını ekleyin.
  • Laravel scheduler — artisan schedule:run komutunu çalıştırır. Laravel'in kendi zamanlayıcısı için sıklığı Her dakika seçin.
  • Kendi PHP dosyanız — site dizininde seçtiğiniz bir .php dosyasını çalıştırır. Yol site dizinine görelidir (örneğin scripts/temizle.php), yalnızca harf, rakam, _, ., / ve - içerebilir ve .. ile dizin dışına çıkılamaz.
  • Dış URL'e istek — girdiğiniz adrese zamanlanmış aralıklarla istek gönderir. Panel bu isteği en çok 30 saniye süren bir curl komutuyla yapar. Adres http:// ya da https:// ile başlamalıdır ve yalnızca harf, rakam ve . - / : ? & = % _ karakterlerini içerebilir. Adres doğrudan bir IP adresi olarak yazılmışsa ve bu adres yerel (127.0.0.1 gibi) ya da özel ağ adresiyse reddedilir.
  • Serbest komut — doğrudan kabuk (shell) komutu yazarsınız. Yalnızca yönetici hesabı bu şablonu görür; diğer hesaplarda panel "Serbest komut yalnız yönetici hesabına açık — bir hazır şablon seçin" uyarısı verir. Komutta satır sonu ve % karakteri kullanılamaz, çünkü crontab'da özel anlamları vardır.

Zamanlama

Zamanlama adımında Basit kipinde bir Sıklık seçersiniz: Her dakika, 5 dk'da bir, Saatlik, Günlük, Haftalık, Aylık ya da Yıllık. Seçime göre Saat, Dakika, Gün, Ayın günü ve Ay alanları açılır. Panel bu seçimleri crontab ifadesine çevirir ve onay adımında gösterir.

Yönetici hesabında ayrıca Gelişmiş kip vardır. Bu kipte beş alanlı cron ifadesini (dakika, saat, ayın günü, ay, haftanın günü) kendiniz yazarsınız ya da @daily gibi bir anahtar kullanırsınız. Her alan *, bir sayı, 1-5 gibi bir aralık, */10 gibi bir adım ya da virgülle ayrılmış bir liste olabilir. Gün ve ay adları (örneğin mon) kabul edilmez, sayı kullanın.

text
*/5 * * * *     her 5 dakikada bir
0 3 * * *       her gün 03:00
30 2 * * 0      pazar günleri 02:30
0 0 1 * *       her ayın 1'i, gece yarısı
@hourly         her saat başı

Kabul edilen anahtarlar @reboot, @yearly, @annually, @monthly, @weekly, @daily, @midnight ve @hourly olarak sınırlıdır.

Çıktı ve askıya alma

Her görevin çıktısı (hem normal çıktı hem hata mesajları) sitenin cron.log dosyasına eklenir. Bu dosya sitenin ev dizininde değil, sunucuda panelin kendi dizinindedir ve Dosya Yöneticisi'nde görünmez:

bash
tail -n 50 /var/lib/deckpa/crons/example.com/cron.log

Dosya site kullanıcısına aittir ve yalnızca onun okuyup yazabildiği izinle (0600) tutulur; sunucu yöneticisi root olarak okuyabilir. Alt alan adı için eklenen bir görevin çıktısı, alt alan adının kendi adıyla anılan dizindeki cron.log dosyasına yazılır. Görevin çıktısını panelden görmeniz gerekiyorsa betiğinizin kendi günlüğünü site klasörü içindeki bir dosyaya yazmasını sağlayın.

Yönetici, Loglar sayfasındaki Cron sekmesinde sunucunun cron servisinin kaydını görür: bir görevin tetiklenip tetiklenmediğini oradan anlarsınız. Görev tetiklenmişse ama beklediğiniz sonucu vermemişse sorun çoğunlukla görevin kendi içindedir ve cron.log dosyasında görünür.

Siteyi askıya aldığınızda zamanlanmış görevler durur: panel görev satırlarını silmez, yalnızca etkisizleştirir; askı kaldırıldığında görevler yeniden etkinleşir.

Sık çalışan görevler (her dakika gibi) sunucuyu sürekli meşgul eder. Bir görevin gerçekten o sıklıkta çalışması gerekmiyorsa daha seyrek bir zamanlama seçin ve önceki çalışma bitmeden yenisinin başlamayacağından emin olun.

Sık sorunlar

  • Bu zamanlama ve komutla aynı görev zaten var — aynı zamanlama ve komuta sahip bir görev eklenemez. Mevcut görevi silin ya da zamanlamayı değiştirin.
  • Bilinmeyen görev şablonu — sitenin PHP sürümü sunucuda kurulu değilse şablonlar çalışmaz. Sitenin Ayarlar sekmesinden kurulu bir sürüm seçin.
  • Geçersiz URL — dış URL şablonunda adres http:// ya da https:// ile başlamalı ve izinli karakterlerden oluşmalıdır. # ya da + içeren adresler kabul edilmez.
  • Geçersiz dosya yolu — "Kendi PHP dosyanız" şablonunda yalnızca site dizinindeki bir .php dosyası seçilebilir.
  • Görev hiç çalışmıyor — sitenin askıda olmadığını, zamanlamanın beklediğiniz anı gösterdiğini ve komutun site kullanıcısıyla çalışacak şekilde yazıldığını denetleyin. Yönetici, Loglar → Cron sekmesinden görevin tetiklenip tetiklenmediğine bakabilir.