Як я можу не допустити запуску завдань на Cron відвідувачами сайту?


12

Журнали мого сайту показують, що Cron спрацьовує, якщо хтось відвідує веб-сайт. Це сповільнює час завантаження першого відвідування.

Cron налаштований для роботи кожні 3 години тут: Адміністрація »Конфігурація» Система »Cron .

Як я можу запустити крон, запланований і не викликаний відвідувачами?

Відповіді:


9

Спершу слід прочитати сторінки підручника про Drupal про cron, щоб отримати тло та команди для запуску.

  • Якщо у вас є доступ оболонки / SSH до сервера (Linux), ви можете запустити команду run crontab -u www-data -eдля редагування таблиці cron для веб-користувача. Ви повинні мати можливість використовувати деталі, наведені у вищенаведеному посиланні, щоб налаштувати правильні запуски хронів стільки разів, скільки хочете.
  • Якщо ви перебуваєте на спільному хостингу без доступу до оболонки, вам потрібно буде скористатися панеллю керування веб-хостингу (CPanel, Plesk тощо), щоб увійти та додати "Заплановану задачу". Це надає веб-інтерфейс до вкладок cron, тому знадобляться ті самі налаштування.
  • Якщо таких немає в наявності, вам потрібно буде попросити вашу хостинг-компанію про допомогу, але є також безкоштовні та платні послуги, якими ви можете cron.phpвіддалено скористатися телефоном на сторінку. Наприклад, див. Набір завдання Cron Job .

Погляньте, як модуль Elysia Cron, якщо ви хочете більше вийти з крона в цілому - це хороша документація і дозволяє тонко контролювати, які завдання виконуються, коли.

Нарешті, не забудьте відключити його запуск сайту, коли відвідувачі приїжджають в Адміністрацію »Конфігурація» Система »Cron, коли вам вдалося це налаштувати.


У мене є доступ до оболонки. Я знаю, як налаштувати робочі місця в Cron. Тож я це зрозумію. Але дякую за узагальнення всієї інформації.
cateye

Але я не розумію, чому Друпал поводиться так, як це робить зараз. Якщо в базовій конфігурації планується запускати крон кожні 3 години, чому він чекає відвідувача?
cateye

1
Думаючи про це. Для Drupal немає курсу виконувати роботу з кроном без завантаження. А завантаження відбувається, коли відвідувач потрапляє на сайт. Отже, підсумок такий: Якщо ви хочете дійсно заплановані завдання cron, вам доведеться налаштувати його на стороні сервера.
cateye

2
Саме так. Нічого не відбувається на сервері, якщо хтось або щось не працює. За замовчуванням Drupal 7 - запускати cron, коли користувачі приходять періодично, щоб забезпечити виконання ключових завдань. Drupal 6 покладався на модуль Cron Poor Man Cron, щоб зробити це за відсутності належної роботи з крон ... і майже все в Drupal потребує завантажувального пристрою, щоб відбутися першим. Належне завдання роботи на сервері, безумовно, найкращий варіант.
Джим Кіркпатрік

1
ВІДПОВІДЬ НИЖЧЕ описує , як це виправити. Не цей :(
Томаш Фейфар

13

Drupal 7 включив у свої модулі код, який знаходився в Poormanscron , метою якого є саме виконання завдань Drupal cron на сайті, де неможливо встановити завдання cron, коли користувач відвідує ваш сайт, і кожні X години (як встановлено в сторінку, яку ви бачили).

Якщо ви хочете уникнути такої поведінки, вам просто потрібно встановити "Run cron every" на "Never"; всупереч тому, що може здатися, що саме впливає на те, що відбувається, коли користувачі відвідують ваш сайт. [1] Ви все ще можете виконувати завдання Drupal cron за межами Drupal, пам'ятаючи, що в Drupal 7 cron.php потрібно викликати з-за меж Drupal, передаючи значення, показане в "Адміністрація> Звіти> Звіт про стан".

 

скріншот

 

 

 

 

 

[1]: Насправді ні cron.php , ні drupal_cron_run () не перевіряє змінну Drupal, що використовується на цій сторінці налаштувань. Єдині використовувані змінні Drupal:

  • "cron_key", що містить ключ cron, який використовується для уникнення завдань cron Drupal, запускається від несанкціонованих користувачів
  • "support_mode", який встановлюється, TRUEколи сайт знаходиться в режимі обслуговування
  • "cron_last", який містить позначку часу, коли завдання Cron виконувалися востаннє

Єдина складність полягає в тому, що завдання Cron закінчується щоразу, коли ви переглядаєте сторінку, і навіть не можете увійти як адміністратор, щоб її відключити! зітхаю ... Я зрозумію, але добре знати, що його можна відключити, як тільки я дійсно

Так, я швидко вирішив це, встановивши моніторний монітор часу, який "перевіряє" URL-адресу активації крона кожні 6 годин ...
Anders
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.