Plesk Zamanlanmış Görevler (Cron) Oluşturma
Her gece veritabanını dışa aktaran bir betik, saat başı stok güncelleyen bir API çağrısı ya da beş dakikada bir çalışması gereken WordPress cron’u için sunucuya SSH ile bağlanıp crontab düzenlemenize gerek yok. Plesk zamanlanmış görevler (Scheduled Tasks) ekranı, komut, PHP betiği ya da URL’yi seçtiğiniz aralıklarla çalıştırır ve sonucu e-postayla bildirir.
Bu rehberde LIONFIN Plesk hosting hesabınızda görev türlerini, adım adım kurulumu, cron zamanlama biçimini, WordPress ve Laravel için hazır örnekleri ve görev çalışmadığında bakılacak yerleri anlatıyoruz.
Zamanlanmış görev nedir, hangi işlerde kullanılır?
Zamanlanmış görev (cron job), sunucunun belirlediğiniz takvime göre kendi başına çalıştırdığı komuttur. Ziyaretçi trafiğine bağlı kalmadan, gece saatlerinde ya da dakikalar içinde tekrarlanan işler için idealdir. Tipik kullanım alanları:
- Yedekleme: veritabanını dışa aktarıp
privateklasörüne yazan betik; tam yedek için yine de Plesk yedekleme planı kullanın. - Önbellek ve geçici dosya temizliği: eski oturum ve önbellek dosyalarını silme.
- Uygulama zamanlayıcıları: WordPress
wp-cron.php, Laravelschedule:run, Magento cron. - Veri senkronizasyonu: ERP ya da pazaryeri API’sinden ürün ve stok çekme.
- Rapor ve bildirim: günlük satış özetini e-postayla gönderme.
Plesk, görevleri abonelik kullanıcısının yetkileriyle çalıştırır; bu sayede betikleriniz yalnızca kendi dosyalarınıza erişir ve sunucunun geneline zarar veremez.
Plesk zamanlanmış görevler ekranı ve görev türleri
Websites & Domains sekmesinde alan adı kartındaki Scheduled Tasks bağlantısına tıklayın (sağ menüdeki Tools altında da yer alır). Add Task düğmesi üç görev türü sunar:
| Görev türü | Ne çalıştırır | Ne zaman seçilir |
|---|---|---|
| Run a command | Kabuk komutu ya da çalıştırılabilir dosya | Bash betikleri, mysqldump, php artisan |
| Fetch a URL | Belirtilen adrese HTTP isteği gönderir | Web üzerinden tetiklenen betikler, wp-cron |
| Run a PHP script | Seçtiğiniz PHP sürümüyle betiği doğrudan çalıştırır | Web sunucusundan bağımsız PHP işleri |
Run a PHP script türünde PHP sürümünü görev bazında seçebilirsiniz; sitenizin sürümüyle aynı olması için Plesk PHP sürümü değiştirme ekranındaki değeri esas alın. Windows aboneliklerinde aynı ekran Run a command ile .bat ya da .exe dosyalarını da çalıştırır.
Adım adım görev oluşturma
Örnek olarak her gece 02:30’da çalışan bir PHP betiği tanımlayalım:
- Add Task düğmesine tıklayın ve Task type olarak Run a PHP script seçin.
- Script path alanına dosya yolunu abonelik köküne göre yazın:
httpdocs/cron/temizlik.php. Yanındaki klasör simgesi dosyayı Plesk dosya yöneticisi ağacından seçmenizi sağlar. - Gerekirse with arguments alanına parametre girin (
--forcegibi). - Run alanında Cron style seçip
30 2 * * *yazın ya da Daily seçeneğinde saati belirleyin. - Description alanına görevin ne yaptığını yazın; aylar sonra listeyi okurken işinize yarar.
- Notify alanında Errors only seçin ve e-posta adresinizi doğrulayın.
- Run Now ile hemen deneyin, çıktıyı kontrol edip OK ile kaydedin.
Basit bir temizlik betiği örneği:
<?php
$dir = __DIR__ . '/../cache';
foreach (glob($dir . '/*.tmp') as $file) {
if (filemtime($file) < time() - 86400) {
unlink($file);
}
}
echo "Temizlik tamamlandı\n";
Cron zamanlama biçimi
Cron ifadesi boşlukla ayrılmış beş alandan oluşur: dakika, saat, ayın günü, ay, haftanın günü. Yıldız (*) “her” anlamına gelir, */5 her beş birimde bir, 1-5 aralık, 1,15 liste demektir.
| İfade | Anlamı |
|---|---|
*/5 * * * * | Her 5 dakikada bir |
0 * * * * | Her saat başı |
30 2 * * * | Her gün 02:30 |
0 3 * * 1 | Her pazartesi 03:00 |
0 0 1 * * | Her ayın 1’i gece yarısı |
0 8-18 * * 1-5 | Hafta içi 08:00–18:00 arası her saat |
Saatler sunucunun saat dilimine göredir; LIONFIN sunucuları Türkiye saatiyle çalışır, farklı bir dilim istiyorsanız görev listesinin üstündeki Settings düğmesinden aboneliğe özel saat dilimi seçebilirsiniz. En kısa aralık bir dakikadır; daha sık çalışması gereken işler için kuyruk (queue) çalışanı gibi kalıcı bir süreç gerekir, bu senaryoda VPS sunucu daha uygun bir zemindir.
WordPress ve Laravel için hazır örnekler
WordPress: Varsayılan wp-cron her sayfa yüklemesinde tetiklenir; ziyaretçisi az sitelerde zamanlanmış yazılar gecikir, yoğun sitelerde gereksiz yük oluşur. wp-config.php dosyasına şu satırı ekleyin:
define('DISABLE_WP_CRON', true);Ardından Fetch a URL türünde bir görev oluşturup adresi siteniz.com/wp-cron.php?doing_wp_cron olarak girin ve */5 * * * * aralığını seçin. WordPress Toolkit kullanıyorsanız bu ayar kartta tek anahtar olarak da sunulur; ayrıntı Plesk WordPress Toolkit kullanımı rehberindedir.
Laravel: Run a command türünde şu komutu dakikada bir çalıştırın; uygulamanızın kendi zamanlayıcısı gerisini halleder:
/opt/plesk/php/8.3/bin/php /var/www/vhosts/siteniz.com/httpdocs/artisan schedule:runPHP ikilisinin yolu sunucudaki sürüme göre değişir; doğru yolu Run a PHP script türünü seçip php -v çıktısını alan küçük bir betikle ya da destek ekibinden öğrenebilirsiniz. Sunucu tarafına e-posta gönderen betiklerde teslimat için SMTP kimlik doğrulaması kullanın; yerel mail() çağrıları spam filtrelerine takılabilir.
Görev çalışmıyorsa bakılacak yerler
Listede görünüyor ama hiç çalışmamış
Plesk zamanlanmış görevler listesinde görevin yanındaki Active kutusunun işaretli olduğundan ve cron ifadesinin geçerli olduğundan emin olun; Run Now ile elle tetikleyip çıktıyı okuyun.
“Permission denied” hatası
Betik dosyasının çalıştırma izni yoktur ya da dosya başka bir kullanıcıya aittir; dosya yöneticisinden izinleri 755 yapın.
“Command not found” hatası
Cron ortamında PATH kısıtlıdır; php yerine tam yol (/opt/plesk/php/8.3/bin/php), mysqldump için /usr/bin/mysqldump yazın.
Betik tarayıcıda çalışıyor, cron’da çalışmıyor
Betik göreli yol kullanıyordur; __DIR__ ile mutlak yol oluşturun. Web üzerinden çalışması gereken betikler için Fetch a URL türünü seçin.
E-posta bildirimi gelmiyor
Notify ayarı Do not notify olabilir; ayrıca sunucudan çıkan bildirimlerin spam klasörüne düşmediğini kontrol edin. Sorunun kaynağını bulamazsanız müşteri panelinden destek talebi açın, görev kimliğini ve çalışma saatini belirtin.
Sık Sorulan Sorular
Plesk’te kaç zamanlanmış görev oluşturabilirim?
Plesk tarafında sabit bir sınır yoktur; sayıyı hosting paketinizin kaynak limitleri ve görevlerin ne kadar işlemci kullandığı belirler. Onlarca dakikalık görev yerine işleri tek betikte toplamak hem yönetimi kolaylaştırır hem de kaynak sınırına takılma riskini azaltır.
Görevin çıktısını dosyaya kaydedebilir miyim?
Evet. Run a command türünde komutun sonuna yönlendirme ekleyin, örneğin komut ardından büyüktür işaretiyle private/cron.log yolunu verin; hataları da aynı dosyaya toplamak için 2>&1 ifadesini kullanın. Dosya zamanla büyüyeceği için haftalık bir görevle döndürmeniz ya da silmeniz gerekir.
Cron görevi neden dakikada bir çalışırken sunucu yavaşlıyor?
Betik önceki çalışması bitmeden yeniden başlıyor ve süreçler üst üste biniyor olabilir. Betiğin başında kilit dosyası oluşturup bitince silmek, ya da aralığı işin süresine göre uzatmak sorunu çözer. Uzun süren işler için görev süresini ölçüp buna göre plan yapın.
Windows hostingde de cron oluşturabilir miyim?
Evet, Plesk for Windows aynı Scheduled Tasks ekranını sunar; arka planda Windows Görev Zamanlayıcı kullanılır. Run a command türüyle .bat, .exe ya da PowerShell betiklerini, Fetch a URL türüyle ASP.NET sayfalarını tetikleyebilirsiniz. PHP betikleri için de aynı seçenekler geçerlidir.
Bu makale yardımcı oldu mu?
Geri bildiriminiz için teşekkürler!
kişi faydalı buldu