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.


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.phpdosyasını zamanlanmış aralıklarla tetikler. WordPress'in ziyaretçi isteğiyle tetiklediği zamanlayıcıyı kapatıp gerçek bir cron kullanmak içinwp-config.phpdosyasınadefine('DISABLE_WP_CRON', true);satırını ekleyin. - Laravel scheduler —
artisan schedule:runkomutunu ç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
.phpdosyasını çalıştırır. Yol site dizinine görelidir (örneğinscripts/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
curlkomutuyla yapar. Adreshttp://ya dahttps://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.1gibi) 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.
*/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:
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 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 dahttps://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
.phpdosyası 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.