İçeriğe geç
İçindekiler
Web Siteleri

Cron Görevlerini Ayarlama ve Yönetme

Makine çevirisi. İngilizce orijinal mevcuttur.

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:

  1. KPanel'e giriş yapın ve sol kenar çubuğunda Web Siteleri öğesine tıklayın.
  2. İstediğiniz siteye tıklayın.
  3. 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.

KPanel'de bir site için Cron sayfası, o sitedeki zamanlanmış işleri listeler

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 saat0 * * * *
Günlük 02:000 2 * * *
Haftalık Pazar0 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 * * 1 her 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:

  1. Siteyi, ardından WordPress sekmesini açın.
  2. WP-Cron bölümünü açın.
  3. 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.

Bu yardımcı oldu mu?

Yapay zeka mısınız? Bu sayfayı Markdown olarak okuyun

İlgili makaleler

SFTP ile Bağlanma: FileZilla, Cyberduck ve Komut SatırıSFTP (Secure File Transfer Protocol), sitenizin sunucu üzerindeki dosyalarına doğrudan erişim sağlar.…SSL Sertifikaları ve HTTPSBu makale, SSL'in ne olduğunu sade bir dille açıklar, KapsuleHost'un sitelerinizde SSL'i nasıl otomatik olarak yönettiğini anlatır ve sertifikanızla ilgili bir…Web Siteleri: Nereden BaşlamalıKapsuleHost'ta web sitesi barındırmanın nasıl işlediği, bir sitenin her sekmesinde nelerin bulunduğu ve önünüzdeki iş için hangi kılavuzu okumanız gerektiği.…Site Çalışma Süresi İzlemeKapsuleHost'taki her site otomatik olarak her 60 saniyede bir kontrol edilir ve Uptime sekmesi size sonucu gösterir: mevcut durum, çalışma süresi yüzdesi, yanıt…

Hâlâ takıldınız mı?

Hesabınızı bilen Kora'ya sorun ya da ekibimizle iletişime geçin.

Bize UlaşınDesteğe e-posta gönder