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

Cron

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

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

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

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

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

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

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

Существует два основных шага для реализации cron:

  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 отправляет весь вывод в 'bin' и предотвращает отправку вам электронного письма каждые 1 минуту.

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

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

  • Cron с Unix или Linux - службы cron в различных операционных системах на базе UNIX и Linux.
  • Cron с Windows OS - службы cron в Windows
  • Apple OSX - используйте встроенную службу 'crontab', которая точно такая же, как Cron с Unix или Linux. Однако вы можете сделать это по-своему, используя launchd - см. Cron с MAC OS X
  • Cron с веб-хостингом - службы 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 (например, поиск строки "Завершено cron