Bir cron işi, bir komutu zamanlanmış şekilde, arka planda çalıştırır; sitenizi ziyaret eden olsun ya da olmasın. Bu kılavuz, KPanel'de bir cron işi eklemeyi, bu platform için programı ve komutu doğru şekilde yazmayı, WordPress'in güvenilmez yerleşik zamanlayıcısının yerine geçmeyi ve bir iş beklediğiniz gibi çalışmadığında çıktıyı bulmayı kapsar.
Cron KPanel'de Nerede Bulunur
Cron bir siteye aittir, bu yüzden ona ana menüden değil site üzerinden ulaşırsınız:
- KPanel'e giriş yapın ve sol kenar çubuğunda Web Siteleri öğesine tıklayın.
- İstediğiniz siteye tıklayın.
- Sitenin kendi menüsünde, Ayarlar ardından Cron bölümünü açın.
Doğrudan adres /websites/<site-id>/cron'dir. Mevcut işlerin bir tablosunu, sitede hiç iş yoksa boş bir durumu göreceksiniz.

Bir İş Ekleme
Sağ üstte Cron İşi Ekle düğmesine tıklayın. Formda üç alan bulunur.
Program
Altı hazır düğme ifadeyi sizin için doldurur:
| Düğme | İfade |
|---|---|
| Her dakika | * * * * * |
| Her 5 dakika | */5 * * * * |
| Her saat | 0 * * * * |
| Günlük 02:00 | 0 2 * * * |
| Haftalık Pazar | 0 2 * * 0 |
| Aylık 1. | 0 2 1 * * |
Ya da kendi ifadenizi Cron ifadesi alanına yazın. Sırasıyla beş alan: dakika, saat, ayın günü, ay, haftanın günü:
minute hour day-of-month month day-of-week
0 3 * * *her gün saat 03:00'te çalışır.*/15 * * * *her on beş dakikada bir çalışır.0 9 * * 1her Pazartesi saat 09:00'da çalışır.30 1 1 * *her ayın birinde saat 01:30'da çalışır.0 */6 * * *her altı saatte bir, saat başında çalışır.
Etiket
Daha sonra tanıyabileceğiniz bir ad, örneğin WordPress cron ya da Nightly stock sync. İşler tablosunda size gösterilen budur, bu yüzden açıklayıcı yapın: job 3 sabahın 2'sinde kimseye yardımcı olmaz.
Komut
Çalıştırılacak kabuk komutu. İşi oluşturmak için Save düğmesine tıklayın.
Tam yollar kullanın. Cron minimal bir ortamda çalışır ve kabuk profilinizin hiçbiri yüklenmez, bu yüzden SSH üzerinden giriş yaptığınızda çalışan sade bir php veya göreli bir dizin burada sessizce başarısız olur. Yolun tamamını her seferinde yazın.
Komutu Yazma
İşler sitenizin kendi sistem kullanıcısı olarak çalışır, bu yüzden ana dizininiz doğru referans noktasıdır ve ~ doğru şekilde çözümlenir. Sitenizin dosyaları şurada bulunur:
~/htdocs/yourdomain.co.nz
Tam yolu sitenin Ayarlar, ardından SFTP sekmesinde doğrulayabilirsiniz; burada Site dosyaları altında yazdırılır.
Tipik komutlar:
cd ~/htdocs/yourdomain.co.nz && /usr/bin/wp cron event run --due-now
cd ~/htdocs/yourdomain.co.nz && /usr/bin/php bin/send-queued-emails.php
/usr/bin/curl -fsS https://yourdomain.co.nz/api/nightly-report
Komutu zamanlamadan önce test edin. Eğer bir wp komutuysa sitenin WordPress, ardından Console bölümüne yapıştırın ya da SSH üzerinden çalıştırın. Hiçbir zaman çalışmayacak bir işi, gece 3'te bir günlük dosyasında bulmaktansa komut isteminde fark etmek çok daha kolaydır.
WordPress'in Yerleşik Zamanlayıcısının Yerine Geçme
WordPress, yalnızca birisi bir sayfa yüklediğinde tetiklenen kendi sahte zamanlayıcısı WP-Cron ile birlikte gelir. Sakin bir sitede, zamanlanmış gönderiler geç yayımlanır ve e-postalar gönderilmeden kuyruğa birikir. Yoğun bir sitede ise her ziyaretçi programı kontrol etmenin maliyetini öder.
Gerçek bir cron işi her ikisini de çözer. KPanel bu değişimin tamamını sizin için yapar:
- Siteyi, ardından WordPress sekmesini açın.
- WP-Cron bölümünü açın.
- Sistem cron etkinleştir düğmesine tıklayın.
Bu işlem, WP-Cron'u her beş dakikada bir çalıştıran bir program ekler ve sayfa yüklemelerinin de onu tetiklemesini durdurmak için DISABLE_WP_CRON'yi ayarlar. Aynı ekrandaki Sistem cron'unu kaldır, her iki yarıyı da geri alır.
Bunu elle yapmayı tercih ederseniz, iki adımdır:
Ziyaretçi tarafından tetiklenen sürümü devre dışı bırakın. Ayarlar, ardından Dosya Yöneticisi kullanarak bunu /* That's all, stop editing! */ satırının üzerine, wp-config.php içine ekleyin:
define( 'DISABLE_WP_CRON', true );
Gerçek işi ekleyin. Ayarlar, ardından Cron bölümünde:
- Program:
*/5 * * * * - Etiket:
WordPress cron - Komut:
cd ~/htdocs/yourdomain.co.nz && /usr/bin/wp cron event run --due-now
DISABLE_WP_CRON yarısını atlamayın. Her ikisi de çalışırken, her zamanlanmış görev iki kez tetiklenebilir: yinelenen e-postalar, yinelenen sipariş işleme, bir abonelik eklentisinde yinelenen ücretlendirmeler. WP-Cron bölümündeki tek tıklamalı eylemi kullanın, bu başınıza gelmez.
WooCommerce ve Arka Plan Kuyrukları
WooCommerce, sipariş durumu değişiklikleri, abonelik yenilemeleri, e-postalar ve stok güncellemeleri için arka planda bir kuyruk kullanır. WP-Cron'a dayanır, bu yüzden sakin bir mağazada en çok zarar gören yük tam olarak budur.
Gerçek program devreye girdiğinde, kuyruk her beş dakikada bir işlenir. Bunu wp-admin'de WooCommerce, ardından Status, ardından Scheduled Actions bölümünden izleyin.
Yüksek hacimli bir mağaza */2 * * * *'e geçebilir. Bunun altına inmek nadiren yardımcı olur: iş yapmaktan çok süreç başlatmaya zaman harcarsınız. Bkz. WooCommerce Kurulumu.
Mevcut İşleri Yönetme
İşler tablosu her satırda iki eylemle birlikte Label, Schedule, Command, Son çalıştırma ve Status bilgilerini gösterir:
- Disable, bir işi silmeden duraklatır ve onu geri getirmek için Enable'a dönüşür. Bunu bir işin soruna neden olup olmadığını test ederken kullanın.
- Delete, onu kalıcı olarak kaldırır. Onay istenir ve zamanlanmış çalışmalar hemen durur.
Bir cron işini silmek geri alınamaz. Program, o anda sunucudan kaldırılır. Yalnızca geçici olarak durdurmaya çalışıyorsanız Disable kullanın.
Çıktıyı Bulma
KapsuleHost'un oluşturduğu her işin çıktısı sizin için yakalanır. Standart çıktı ve hatalar, site kullanıcınızın ana dizinindeki bir cron-logs dizinindeki bir günlük dosyasına eklenir, her iş için bir dosya.
Bu günlük, neredeyse her "işim çalıştı mı?" sorusunun cevabıdır, çünkü komutun yazdırdıklarını ve ortaya çıkardığı her hatayı kaydeder.
Onu okumak için SSH üzerinden bağlanın ve ~/cron-logs/ içine bakın. SSH anahtar kimlik doğrulaması kullanır, bu yüzden önce sitenin Ayarlar, ardından SSH Anahtarları sekmesinden genel anahtarınızı ekleyin: bkz. SSH Anahtarları Ekleme.
File Manager ve SFTP hesapları site dizininizle, ~/htdocs/yourdomain.co.nz ile sınırlıdır ve cron-logs onun bir seviye üstünde yer alır. Bu kasıtlıdır: SFTP erişimi olan bir yüklenicinin web sitesi dışındaki her şeyin dışında kalmasını sağlar. Günlüklere ulaşmak için yerel SSH kullanın ya da aşağıda gösterildiği gibi çıktıyı site dizininize yönlendirin.
Çıktının File Manager'ın açabileceği bir yerde olmasını tercih ederseniz, onu kendiniz yönlendirin:
cd ~/htdocs/yourdomain.co.nz && /usr/bin/wp cron event run --due-now >> ~/htdocs/yourdomain.co.nz/wp-content/cron.log 2>&1
2>&1, hataları normal çıktıyla aynı dosyaya gönderir. Bu olmadan, hatalar hiçbir yere gitmez.
Site dizininizin içindeki her şey potansiyel olarak web üzerinden istenebilir. Yönlendirilmiş bir günlüğü site kökü yerine wp-content altına koyun, kimsenin tahmin edemeyeceği bir ad verin ve hata ayıklamayı bitirdiğinizde silin.
İyi Uygulama
- Programlarınızı kademeli hale getirin. Hepsi
0 2 * * *'e ayarlanmış altı iş aynı anda başlar. Onları yayın:0 2,10 2,20 2. - Gerçekten ihtiyacınız olmadıkça her dakika kullanmayın.
*/5, WordPress ve WooCommerce dahil neredeyse her şey için yeterlidir. - İşleri kısa tutun. Aralığından daha uzun süren bir iş, bir sonraki çalıştırmayla çakışır.
- Gürültülü her şey için çıktıyı yönlendirin, böylece gevezelik eden bir iş diskinizi doldurmaz.
- Listeyi ara sıra gözden geçirin. Kaldırdığınız bir eklentiden kalan işler çalışmaya devam eder.
Sorun Giderme
İş hiç çalışmıyor gibi görünüyor. Önce yolu kontrol edin. Günlük dosyasını açın. Ardından durumun Active olduğunu, Disabled olmadığını doğrulayın. Ardından aynı komutu SSH üzerinden çalıştırın ve ne söylediğine bakın.
Günlükte "command not found" hatası. Eksik bir tam yol. Çıplak ad yerine /usr/bin/php, /usr/bin/wp, /usr/bin/curl kullanın.
İzin reddedildi. İş, sitenizin sistem kullanıcısı olarak çalışır. O kullanıcının, komutun dokunduğu her şeye sahip olması ya da en azından onu okuyabilmesi gerekir. İzinleri File Manager Kullanımı'nda kontrol edin.
WordPress görevleri hâlâ geç çalışıyor. Değişimin her iki yarısının da yerinde olduğunu doğrulayın: program Ayarlar, ardından Cron içinde mevcut ve DISABLE_WP_CRON ayarlanmış. WordPress sekmesindeki WP-Cron bölümü her ikisinin de mevcut durumunu gösterir.
İş çalışıyor ama bu sırada site yavaş. Onu daha sakin bir saate taşıyın ya da işi daha küçük parçalara bölün. Site düzeyindeki kaynak kullanımı Performans altında görülebilir: bkz. Web Sitesi Hızını İyileştirme.
Bir eklenti güncellemesinden sonra bir iş çalışmayı durdurdu. Komut yolu değişmiş olabilir. Günlüğü kontrol edin, ardından eski işi silip düzeltilmiş bir tane ekleyerek komutu işler tablosundan güncelleyin.