Jak mogę zapobiec uruchamianiu zadań CRON przez odwiedzających witrynę?


12

Dzienniki mojej witryny pokazują, że cron jest uruchamiany, gdy ktoś odwiedza witrynę. Spowalnia to czas ładowania pierwszej wizyty.

Cron jest skonfigurowany do działania co 3 godziny tutaj: Administracja »Konfiguracja» System »Cron .

Jak mogę uruchomić cron zaplanowany i nie uruchamiany przez odwiedzających?

Odpowiedzi:


9

Powinieneś zacząć od przeczytania stron podręcznika Drupal o cronie, aby uzyskać tło i polecenia do uruchomienia.

  • Jeśli masz dostęp do powłoki / SSH do serwera (Linux), możesz uruchomić za pomocą polecenia run, crontab -u www-data -eaby edytować tabelę cron dla użytkownika sieci. Powinieneś być w stanie użyć szczegółów w powyższym linku, aby skonfigurować odpowiednie przebiegi cron tak często, jak chcesz.
  • Jeśli korzystasz z hostingu współdzielonego bez dostępu do powłoki, musisz użyć panelu sterowania hosta (CPanel, Plesk itp.), Aby się zalogować i dodać „Zaplanowane zadanie”. Zapewnia to interfejs sieciowy do kart cron, więc potrzebne będą te same ustawienia.
  • Jeśli nie są one dostępne, musisz poprosić o pomoc swoją firmę hostingową, ale są też bezpłatne i płatne usługi, z których możesz cron.phpzdalnie zadzwonić na stronę. Zobacz na przykład Ustaw zadanie Cron .

Spójrz jak moduł Elysia Cron, jeśli chcesz więcej z crona w ogóle - ma dobrą dokumentację i pozwala dokładnie kontrolować, kiedy zadania są uruchamiane.

Na koniec pamiętaj, aby wyłączyć witrynę, w której jest uruchamiana, gdy odwiedzający przybywają do Administracji »Konfiguracja» System »Cron, gdy udało Ci się to skonfigurować.


Mam dostęp do powłoki. Wiem, jak skonfigurować zadania crona. Więc to rozgryzę. Ale dziękuję za podsumowanie wszystkich informacji.
cateye

Ale nie rozumiem, dlaczego Drupal zachowuje się tak jak teraz. Jeśli planowana jest podstawowa konfiguracja uruchamiania crona co 3 godziny, dlaczego czeka on na gościa?
cateye

1
Myśleć o tym. Drupal nie może oczywiście uruchomić zadania cron bez bootstrapowania. A ładowanie odbywa się, gdy użytkownik odwiedza witrynę. Podsumowując, jeśli chcesz naprawdę zaplanowanych zadań crona, musisz skonfigurować je po stronie serwera.
cateye

2
Dokładnie. Na serwerze nic się nie dzieje bez kogoś lub czegoś, co go uruchomi. Domyślnie Drupal 7 uruchamia crona, gdy użytkownicy przychodzą od czasu do czasu, aby zapewnić uruchomienie kluczowych zadań. Drupal 6 polegał na module Cron Poor Man, aby to zrobić przy braku odpowiedniej pracy crona ... i prawie wszystko w Drupal potrzebuje najpierw bootstrapu. Właściwa praca crona na serwerze jest z pewnością najlepszą opcją.
Jim Kirkpatrick

1
ODPOWIEDŹ PONIŻEJ opisuje jak to naprawić. Nie ten :(
Tomáš Fejfar,

13

Drupal 7 zawarł w swoich modułach kod, który był w Poormanscron , którego celem jest właśnie uruchamianie zadań cron Drupal na stronie, na której nie można ustawić zadań cron, gdy użytkownik odwiedza twoją witrynę i co X godzin (zgodnie z ustawieniem w strona, którą widziałeś).

Jeśli chcesz uniknąć takiego zachowania, wystarczy ustawić „Uruchamiaj cron co” na „Nigdy”; w przeciwieństwie do tego, co mogłoby się wydawać, wpływa to tylko na to, co dzieje się, gdy użytkownicy odwiedzają Twoją witrynę. [1] Nadal możesz uruchamiać zadania cron Drupala spoza Drupala, pamiętając, że w Drupal 7 należy wywołać cron.php spoza Drupala, przekazując wartość pokazaną w „Administracja> Raporty> Raport o stanie”.

 

zrzut ekranu

 

 

 

 

 

[1]: W rzeczywistości ani cron.php , ani drupal_cron_run () nie sprawdzają zmiennej Drupal używanej na tej stronie ustawień. Jedynymi używanymi zmiennymi Drupal są:

  • „cron_key”, który zawiera klucz cron używany do uniknięcia zadań cron Drupal, są uruchamiane przez nieautoryzowanych użytkowników
  • „tryb_obsługowy”, który jest ustawiony, TRUEgdy witryna znajduje się w trybie konserwacji
  • „cron_last”, który zawiera znacznik czasu ostatniego uruchomienia zadań cron

Jedyną trudnością jest przekroczenie limitu czasu zadania cron za każdym razem, gdy przeglądasz stronę, i nie możesz nawet zalogować się jako administrator, aby go wyłączyć! westchnienie ...

Tak, rozwiązałem to szybko, ustawiając monitor czasu działania Montastic, który „sprawdza” aktywacyjny URL cron co 6 godzin ...
Anders
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.