Cron görevlerinin site ziyaretçileri tarafından tetiklenmesini nasıl durdurabilirim?


12

Sitemin günlükleri, birisi web sitesini ziyaret ederse cron'un tetiklendiğini gösterir. Bu, ilk ziyaret için yükleme süresini yavaşlatır.

Cron burada her 3 saatte bir çalışacak şekilde yapılandırılmıştır: Yönetim »Yapılandırma» Sistem »Cron .

Ziyaretçiler tarafından tetiklenen ve programlanmamış cron'u nasıl çalıştırabilirim?

Yanıtlar:


9

Arka planı ve çalıştırılacak komutları almak için cron hakkındaki Drupal el kitabı sayfalarını okuyarak başlamalısınız .

  • (Linux) sunucusuna kabuk / SSH erişiminiz varsa crontab -u www-data -e, web kullanıcısı için cron tablosunu düzenlemek için use run komutunu çalıştırabilirsiniz . Yukarıdaki bağlantıdaki ayrıntıları, istediğiniz sıklıkta cron çalışmalarını ayarlamak için kullanabilmelisiniz.
  • Kabuk erişimi olmayan paylaşılan bir barındırma kullanıyorsanız, oturum açmak ve bir 'Zamanlanmış Görev' eklemek için web barındırıcınızın kontrol panelini (CPanel, Plesk vb.) Kullanmanız gerekir. Bu, cron sekmelerine web arayüzü olarak sağlandığından, aynı ayarlara ihtiyaç duyulacaktır.
  • Bunlar mevcut değilse barındırma şirketinizden yardım istemeniz gerekir, ancak kullanabileceğiniz ücretsiz ve ücretli hizmetler de cron.phpsayfayı sizin için uzaktan arayın . Bkz Seti Cron Job örneğin.

Genel olarak crondan daha fazlasını istiyorsanız Elysia Cron modülüne bir göz atın - iyi belgelendirmeye sahiptir ve hangi görevlerin ne zaman yürütüleceğini ince bir şekilde kontrol etmenizi sağlar.

Son olarak, ziyaretçiler bunu ayarlamayı başardığınızda ziyaretçiler Yönetim »Yapılandırma» Sistem »Cron'a geldiğinde siteyi devre dışı bırakmayı unutmayın .


Kabuk erişimim var. Cron işlerini nasıl kuracağımı biliyorum. Ben de çözeceğim. Ancak tüm bilgileri özetlediğiniz için teşekkürler.
cateye

Ama anlamadığım şey, Drupal'ın neden şimdi olduğu gibi davrandığı. Temel yapılandırmanın cron'u her 3 saatte bir çalıştırması planlanıyorsa, neden bir ziyaretçi bekler?
cateye

1
Düşünüyorum. Drupal için önyükleme yapmadan bir cron işi yürütmenin hiçbir yolu yoktur. Ve önyükleme, bir ziyaretçi siteye geldiğinde gerçekleşir. Yani, özet: Gerçekten zamanlanmış cron işleri istiyorsanız, sunucu tarafını ayarlamanız gerekir.
cateye

2
Kesinlikle. Bir sunucuda çalışan biri veya başka bir şey olmadan hiçbir şey olmaz. Drupal 7 varsayılanı, önemli görevlerin yürütülmesini sağlamak için kullanıcılar zaman zaman geldiğinde cron çalıştırmaktır. Drupal 6, uygun bir cron işi olmadan bunu yapmak için Zavallı Adamın Cron modülüne güveniyordu ... ve Drupal'daki hemen hemen her şeyin ilk önce bootstrap'a ihtiyacı var. Sunucudaki uygun bir cron işi kesinlikle en iyi seçenektir.
Jim Kirkpatrick

1
AŞAĞIDA YANIT düzeltmeye açıklamaktadır. Bu değil :(
Tomáš Fejfar

13

Drupal 7, modülleriyle, amacı, bir kullanıcı sitenizi ziyaret ettiğinde ve her X saatte (her ayarlandığı gibi) cron görevlerini ayarlamanın mümkün olmadığı bir sitede tam olarak Drupal cron görevlerini çalıştırmak olan Poormanscron'da bulunan kodu dahil etti. gördüğünüz sayfa).

Bu davranıştan kaçınmak istiyorsanız, "Her cron çalıştır" ı "Asla" olarak ayarlamanız yeterlidir; göründüğünün aksine, kullanıcılar sitenizi ziyaret ettiğinde neler olduğunu etkiler. [1] Drupal cron görevlerini Drupal dışından da çalıştırarak, Drupal 7'de cron.php dosyasının Drupal dışından çağrılması gerektiğini ve "Yönetim> Raporlar> Durum raporu" nda gösterilen değeri geçerek hatırlayabilirsiniz.

 

ekran görüntüsü

 

 

 

 

 

[1]: Aslında, ne cron.php ne de drupal_cron_run () bu ayarlar sayfasında kullanılan Drupal değişkenini kontrol etmez . Kullanılan tek Drupal değişkenleri:

  • Drupal cron görevlerinden kaçınmak için kullanılan cron anahtarını içeren "cron_key" yetkisiz kullanıcılardan çalıştırılır
  • TRUESite bakım modundayken ayarlanan " bakım_ modu"
  • cron görevlerinin son çalıştırılma zaman damgasını içeren "cron_last"

Tek zorluk, sayfayı her görüntülediğinizde cron işi zaman aşımına uğradığında ve bunu devre dışı bırakmak için yönetici olarak oturum açamadığınızda! sigh ... Ben anlıyorum ama aslında oraya bir kez devre dışı bırakılabilir bilmek iyi

Evet, cron aktivasyon URL'sini her 6 saatte bir "kontrol eden" bir Montastic çalışma zamanı monitörü oluşturarak bunu hızlı bir şekilde çözdüm ...
Anders
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.