CLI Job Runner 1.5.0
Этот плагин отключает запускаемый браузером job runner и реализует запускаемый CLI job runner для использования с Unix cron.
Требования
Этот плагин требует PHP 5.4 и выше и был протестирован на XenForo 2.0.x и 2.1.х
Установка
Установка в соответствии с обычной установкой плагинов.
Примечание : после того, как это дополнение установлено и активировано, запланированные задачи больше не будут выполняться - поэтому завершение оставшихся шагов установки имеет решающее значение для обеспечения нормальной работы вашего форума.
Во-первых, вы должны проверить, что ваш job runner функционирует-выполните следующую команду из вашего CLI:
Bash: Скопировать
$ php
Например, если ваша корневая папка находится /srv/www/xenforo/community , то команда будет выглядеть так:
Bash: Скопировать
$ php /srv/www/xenforo/community/cmd.php xf:run-jobs
Выполнение этой команды приведет к выполнению всех невыполненных заданий, а затем завершится сообщением о том, есть ли еще задания, ожидающие выполнения или нет. При выполнении этой команды из cron рекомендуется использовать флаг --quiet (или -q )для подавления вывода.
После того, как вы счастливы, что job runner функционирует правильно, вам нужно будет создать свою собственную cron задачу, чтобы запустить его по расписанию по вашему выбору.
Подход №1 с помощью crontab:
Настоятельно рекомендуется запустить задачу крона от имени пользователя веб-сервера, чтобы предотвратить возможные проблемы с разрешениями.
Например, на Ubuntu с пользователем www-data, установите задачу cron, выполнив следующую команду:
Bash: Скопировать
$ sudo crontab -u www-data -e
Отредактируйте файл crontab и добавьте:
Bash: Скопировать
* * * * * php /path/to/your/forum/root/cmd.php --quiet xf:run-jobs
Сохранить файл crontab.
Подход №2 с использованием cron.d:
Вместо использования crontab некоторые дистрибутивы Linux создают известный каталог, который автоматически проверяется на выполнение задач cron. В случае Ubuntu, вы можете создавать файлы в /etc/cron.d где указывается расписание, пользователь, выполняющий команду, и сама команда.
Создайте файл в /etc/cron.d со следующим содержанием:
Bash: Скопировать
* * * * * webserver-user php /path/to/your/forum/root/cmd.php --quiet xf:run-jobs
... где webserver-user изменяется на имя пользователя, от имени которого работает ваш веб-сервер, и измените путь к корню вашего форума.
Опять же, используя наш предыдущий пример, где пользователь www-data и наш корень форума
/srv/www/xenforo/community , я бы выполнил следующую команду для создания файла cron:
Bash: Скопировать
echo "* * * * * www-data php /srv/www/xenforo/community/cmd.php --quiet xf:run-jobs" | sudo tee -a /etc/cron.d/xenforo
Оба варианта (crontab и cron.d) будет выполнять работу job каждую минуту, проверяя невыполненные задания для запуска.
По умолчанию job runner будет выполняться не более 30 секунд, выполняя невыполненные задания до тех пор, пока в очереди больше нет выполняемых заданий.
Конфигурация
Можно настроить максимальное время выполнения job runner, указав параметр --time=[TIME] в командной строке.
Например, чтобы разрешить выполнение задания в течение максимум 45 секунд:
Bash: Скопировать
$ php
Не рекомендуется разрешать выполнение job runner дольше, чем период между триггерами крона. Например, приведенный выше пример задачи cron будет выполнять job runner каждую минуту, поэтому установка максимального времени выполнения более 60, как правило, плохая идея.
Если вы предпочитаете запускать задачу крона не так часто, как раз в минуту, вы можете настроить задание крона на свое усмотрение
Например, чтобы запускать задачу крона каждые 5 минут, позволяя job runner выполняться не более 4 минут, используйте следующую команду крона:
Bash: Скопировать
*/5 * * * * php
Для дальнейшей настройки выполнения задания вы также можете настроить максимальное время, разрешенное для выполнения каждого задания.
Это настроено через конфигурацию config.php
PHP: Скопировать
$config[jobMaxRunTime'] = 8;
Параметр jobMaxRunTime настраивает время в секундах, в течение которого задания обработки могут выполняться, прежде чем они будут приостановлены для дальнейшей обработки на другом обходе, если это возможно. Настройка по умолчанию оптимизирована для запускаемого браузером job runner, поэтому для увеличения времени выполнения заданий в среде интерфейса командной строки (CLI) может потребоваться установить более высокое значение.
Вы не должны установить jobMaxRunTime выше, чем 30 секунд, или время, указанное в опции --time . В целом рекомендуется сохранить этот параметр на относительно небольшом значении, чтобы избежать ситуации, когда одно очень длинное задание может препятствовать своевременному выполнению других заданий. Некоторые эксперименты могут потребоваться, чтобы найти оптимальное значение для загрузки сервера и размера форума.