Как я могу предотвратить запуск задач cron посетителями сайта?


12

Логи моего сайта показывают, что cron срабатывает, если кто-то заходит на сайт. Это замедляет время загрузки при первом посещении.

Cron настроен для запуска каждые 3 часа здесь: Администрирование »Конфигурация» Система »Cron .

Как я могу запустить cron по расписанию, а не запускать посетители?

Ответы:


9

Вы должны начать с чтения страниц справочника Drupal о cron, чтобы получить фон и команды для запуска.

  • Если у вас есть доступ shell / SSH к серверу (Linux), вы можете запустить use run crontab -u www-data -eдля редактирования таблицы cron для веб-пользователя. Вы должны быть в состоянии использовать подробности в приведенной выше ссылке для настройки правильных запусков cron так часто, как вы этого хотите.
  • Если вы используете общий хостинг без доступа к оболочке, вам нужно будет использовать панель управления вашего веб-хостинга (CPanel, Plesk и т. Д.), Чтобы войти в систему и добавить «запланированное задание». Это обеспечивает веб-интерфейс для вкладок cron, поэтому будут необходимы те же настройки.
  • Если они недоступны, вам нужно будет обратиться за помощью к вашей хостинговой компании, но есть также бесплатные и платные услуги, которые вы можете использовать для cron.phpудаленного вызова страницы. См. Например, Задание задания Cron .

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

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


У меня есть доступ к оболочке. Я знаю, как настроить работу cron. Так что я это выясню. Но спасибо за обобщение всей информации.
cateye

Но я не понимаю, почему Drupal ведет себя так, как сейчас. Если в базовой конфигурации запланирован запуск cron каждые 3 часа, почему он ждет посетителя?
cateye

1
Думаю об этом. Конечно, у Drupal нет способа запустить задание cron без начальной загрузки. И начальная загрузка происходит, когда посетитель попадает на сайт. Итак, подведем итоги: если вам нужны действительно запланированные задания cron, вы должны настроить их на стороне сервера.
cateye

2
Точно. На сервере ничего не происходит, если кто-то или что-то не работает. По умолчанию Drupal 7 запускает cron, когда пользователи время от времени прибывают, чтобы обеспечить выполнение ключевых задач. Drupal 6 полагался на модуль Cron Бедного Человека, чтобы сделать это при отсутствии надлежащей работы cron ... и почти все в Drupal нуждается в начальной загрузке. Правильная работа cron на сервере, безусловно, лучший вариант.
Джим Киркпатрик

1
ОТВЕТ НИЖЕ описывает , как это исправить. Не этот :(
Томаш Фейфар

13

Drupal 7 включил в свои модули код, который был в Poormanscron , цель которого - точно запускать задачи Cron Drupal на сайте, где невозможно установить задачи Cron, когда пользователь посещает ваш сайт, и каждые X часов (как установлено в страницу, которую вы видели).

Если вы хотите избежать такого поведения, вам просто нужно установить «Run cron every» на «Never»; вопреки тому, что может показаться, это просто влияет на то, что происходит, когда пользователи посещают ваш сайт. [1] Вы по-прежнему можете запускать задачи cron в Drupal из-за пределов Drupal, помня, что в Drupal 7 необходимо вызывать cron.php из-за пределов Drupal, передавая значение, указанное в «Администрирование> Отчеты> Отчет о состоянии».

 

Скриншот

 

 

 

 

 

[1]: Фактически, ни cron.php , ни drupal_cron_run () не проверяют переменную Drupal, используемую на этой странице настроек. Используются только переменные Drupal:

  • «cron_key», который содержит ключ cron, используемый, чтобы избежать задач cron Drupal, запускается от неавторизованных пользователей
  • «maintenance_mode», который устанавливается, TRUEкогда сайт находится в режиме обслуживания
  • "cron_last", который содержит отметку времени, когда задачи cron запускались в последний раз

Единственная трудность заключается в том, что время выполнения задания cron истекает при каждом просмотре страницы, и вы даже не можете войти как администратор, чтобы отключить ее! вздох ... я разберусь, но приятно знать, что его можно отключить, как только я туда

Да, я быстро решил эту проблему, настроив монитор работоспособности Montastic, который «проверяет» URL активации cron каждые 6 часов ...
Андерс,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.