Перейти к основному содержимому

Крон с услугами веб-хостинга

Moodle «Крон» — это PHP-скрипт (часть стандартной установки Moodle), который должен регулярно запускаться в фоновом режиме. Скрипт Moodle cron запускает различные задачи с разными запланированными интервалами.

ВАЖНО: не пропускайте настройку процесса крона на вашем сервере для Moodle. Без этого ваш сайт не будет работать должным образом.

Рекомендуется запускать Крон каждую минуту, что требуется для асинхронного удаления элементов курса при использовании корзины.

Программа cron (которая запускает скрипт Moodle) является основной частью систем на базе Unix (включая Linux и OSX), используемой для запуска всевозможных зависящих от времени служб. В Windows простейшим решением является создание задачи в Планировщике задач Windows и установка её на регулярный запуск. На общем хостинге вам следует найти документацию (или обратиться в службу поддержки) о том, как настроен cron. Большинство систем общего хостинга используют CPanel для управления сайтами и обычно имеют раздел для заданий Cron на панели.

По сути, задача заключается в добавлении одной команды в список действий cron в вашей системе. В системах на базе Unix этот список представляет собой файл под названием «crontab», который есть у всех пользователей.

Общее обсуждение

Смотрите следующие разделы для вашего типа сервера; этот раздел содержит некоторую общую справочную информацию.

По сути, реализация крона включает два шага:

  1. Определение правильной команды для запуска.
  2. Поиск нужного места в вашей системе для размещения команды.

Определение команды Moodle cron

В Moodle есть два разных способа развертывания cron, которые используют разные скрипты в установке Moodle. Они выглядят следующим образом...

  1. Скрипт CLI (интерпретатора командной строки). Он будет находиться по пути /path/to/moodle/admin/cli/cron.php.

Если есть сомнения, это правильный скрипт для использования. Его нужно запустить с помощью программы «PHP CLI» на вашем компьютере. Так что окончательная команда может выглядеть примерно так:

/usr/bin/php /path/to/moodle/admin/cli/cron.php

Вы можете (и должны) попробовать это в командной строке, чтобы убедиться, что это работает. ВНИМАНИЕ: проверьте, что ваша версия PHP в командной строке совместима с выбранной вами версией Moodle. Программа PHP в командной строке отличается от той, которая запускает ваш веб-сайт, и не всегда имеет ту же версию.

  1. Если по какой-то причине вы не можете запустить скрипт CLI, есть веб-скрипт. Обратите внимание, что он устарел и может быть удален в будущих версиях. Его нужно запустить из веб-браузера, и он будет доступен по веб-адресу примерно так: http://your.moodle.site/admin/cron.php. Вы можете найти веб-браузер на основе командной строки (например, wget), так что окончательная команда может выглядеть так:
/usr/bin/wget http://your.moodle.site/admin/cron.php

Это имеет то преимущество, что его можно запустить из любого места. Если вы не можете настроить cron на своем компьютере, его можно запустить где-нибудь еще.

Веб-команда Moodle cron

  • Если у вас есть выбор, не используйте веб-версию cron. Скорее всего, она будет удалена в будущей версии Moodle.
  • Начиная с Moodle 2.9, задание cron больше не может быть запущено из веб-интерфейса по умолчанию. Вы получите сообщение об ошибке:

!!! Извините, доступ к этой странице через интернет был отключен администратором. !!!

  • Вы можете изменить это в «Личный кабинет ► Администрирование ► Безопасность ► Политика сайта», сняв флажок «Выполнение cron только из командной строки».
  • Вам будет выдано предупреждение о том, что «Запуск cron из веб-браузера может раскрыть конфиденциальную информацию анонимным пользователям. Поэтому рекомендуется запускать cron только из командной строки или задать пароль cron для удаленного доступа».
  • Затем вы можете задать «Пароль cron для удаленного доступа». Если это поле оставить пустым, пароль не потребуется.
  • Это означает, что скрипт cron.php не может быть запущен из веб-браузера без ввода пароля с использованием следующего вида URL:

[http://site.example.com/admin/cron.php?password=opensesame](http://site.example.com/admin/cron.php?password=opensesame)

Поиск нужного места для размещения команды

Это действительно зависит от используемой вами системы, и вам следует найти и прочитать документацию для вашей платформы или хостинга. В большинстве случаев запуск Moodle cron состоит из определения правильной команды (см. выше), а затем добавления её и времени запуска команды в какой-либо файл. Это может быть сделано либо через определенный пользовательский интерфейс, либо путем прямого редактирования файла.

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

Пример... установка cron на Ubuntu/Debian Linux. Предполагается, что вы вошли в систему как root..

Используйте команду crontab, чтобы открыть окно редактора crontab для пользователя www-data. Это пользователь, от имени которого Apache (веб-сервер) работает в системах на базе Debian

$ crontab -u www-data -e

Это откроет окно редактора. Чтобы запускать скрипт cli cron каждые 1 минуту, добавьте строку:

* * * * * /usr/bin/php  /path/to/moodle/admin/cli/cron.php >/dev/null

ПРИМЕЧАНИЕ: финальный >/dev/null отправляет весь вывод в «корзину» и останавливает отправку вам электронного письма каждые 1 минуту.

Настройка cron в вашей системе

Выберите информацию для вашего типа сервера:

Вот еще несколько инструкций для конкретных хостов (пожалуйста, проверьте, актуальны ли они):

Использование сторонней службы cron

Помимо использования cron, размещенного на вашем собственном сервере, вы можете использовать стороннюю службу cron (обычно называемую webcron):

  • cron-job.org — бесплатная служба. (Возможны интервалы в 1 минуту).
  • EasyCron — поставщик услуг webcron, который устраняет необходимость в crontab или других планировщиках задач для установки задания cron.
  • WebCron — бесплатный и простой поставщик услуг webcron.

Настройки cron в Moodle

Администратор может настроить выполнение cron только из командной строки или пароль cron для удаленного доступа в настройках безопасности сайта в разделе управления сайтом.

Удалённый cron

Используя веб-версию cron, вполне нормально разместить процесс cron на другом компьютере, отличном от сервера Moodle. Например, служба cron на сервере Unix может вызывать веб-страницу cron на сервере Moodle на базе Windows.

Планирование задач

Администратор может очень точно планировать задачи cron из раздела «Управление» > «Администрирование» > «Сервер» > «Планировщик задач», см. Планировщик задач.

Запуск cron для нескольких серверов Moodle

  • Задачи могут выполняться параллельно, и процессы используют блокировку, чтобы предотвратить одновременное выполнение задач, что позволяет запускать cron с нескольких веб-серверов, обслуживающих один и тот же экземпляр Moodle.
  • Если вы используете разные экземпляры Moodle на одном сервере, то каждому экземпляру Moodle требуется задание cron. (Даже один Apache веб-сервер может запускать разные экземпляры Moodle на разных доменах, используя возможность виртуальных хостов https://httpd.apache.org/docs/2.2/vhosts/index.html.)

Отладка запланированных задач

Иногда конкретная задача cron может работать неправильно. В версиях Moodle до 2.7 — любая задача cron, вызывающая исключения, препятствовала выполнению остальной части cron. Единственный способ отслеживать, завершается ли cron каждый раз, заключался в добавлении некоторого автоматизированного проверки вывода выполнения cron (