- Совместимость с XenForo
- 2.2
- 2.3
Этот плагин для XenForo 2.2 реализует расширенный, запускаемый через CLI, обработчик заданий для использования с Unix cron в качестве замены встроенной команды
Команда названа
Функции
Основные функции плагина:
Этот плагин требует PHP 7.0 или выше и был протестирован на XenForo 2.2.0 beta 1.
Установка
Установите плагин так же, как и любой другой.
После установки перейдите в
Для начала, вам следует проверить, что Job Runner функционирует. Выполните в консоли команду ниже:
Например, если корневая директория вашего форума —
Выполнение этой команды приведет к выполнению всех невыполненных заданий, а затем завершится сообщением о том, есть ли еще задания, ожидающие выполнения, или нет. При выполнении этой команды из cron рекомендуется использовать флаг --quiet (или -q) для отключения вывода.
Когда вы убедитесь, что средство выполнения заданий работает правильно, вам нужно будет создать свою собственную задачу cron, чтобы запускать ее по расписанию по вашему выбору.
Примечание: если у вас уже настроена задача cron для запуска
Метод #1: Использование crontab.
Рекомендуется запускать это задание cron от имени пользователя веб-сервера для предотвращения возможных проблем с правами.
Например, для Ubuntu с пользователем веб-сервера
Отредактируйте файл crontab, добавив в него:
Сохраните файл crontab.
Метод #2: Использование cron.d.
Вместо использования crontab некоторые дистрибутивы Linux создают каталог, который автоматически проверяется на выполнение задач cron. В случае Ubuntu, вы можете создавать файлы в
Создайте файл в
...где
Опять же, используя предыдущий пример, где пользователь веб-сервера —
Crontab и cron.d будут запускать обработчик заданий каждую минуту, проверяя наличие невыполненных заданий, которые нужно запустить.
По умолчанию job runner будет работать не более 30 секунд, выполняя все невыполненные задания, пока в очереди не останется выполняемых заданий.
Обновление плагина с v1.x после обновления XenForo до v2.2
v2.0 изменяет имя команды и максимально допустимое время выполнения. Также обратите внимание, что параметр
Для обновления:
Настройка
Вы можете настроить максимальное время выполнения задания, указав параметр --time=[ВРЕМЯ] в консоли.
Например, увеличим время выполнения job runner`а до 45 секунд:
Этот плагнин использует файлы блокировки для предотвращения одновременного выполнения нескольких команд исполнителей заданий, что также позволяет запускать команду в течение более длительных периодов времени на загруженных сайтах.
Максимально допустимое время выполнения составляет 10 минут (600 секунд). Команда будет выполняться до тех пор, пока не будет найдено невыполненных заданий, а затем остановится, поэтому время выполнения обычно составляет всего несколько секунд.
Для дальнейшей настройки выполнения вашего задания вы также можете настроить максимальное время, в течение которого каждое задание может выполняться.
Это настраивается с помощью параметра XenForo config.php:
Параметр
В общем, рекомендуется, чтобы этот параметр оставался относительно небольшим, чтобы избежать ситуации, когда одно очень большое задание может помешать своевременному выполнению других заданий. Может потребоваться поэкспериментировать, чтобы найти оптимальное значение для загрузки вашего сервера и размера форума. В случае сомнений оставьте значение по умолчанию — 8 секунд.
Использование
Команда
Отображение заданий
Команда
По умолчанию будут показаны только следующие 100 запланированных заданий, вы можете использовать параметр --all, чтобы показать полный список всех ожидающих заданий.
В списке всегда должно быть хотя бы одно задание (основное задание Cron). Для XF 2.1 и выше вы также увидите задание проверки обновления.
Отладка заданий
Существуют обширные инструменты отладки, помогающие выявлять проблемы с задачами Jobs и Cron.
Для запуска режима отладки, сначала отключите Unix cron, который запускает выполнение заданий автоматически (не забудьте включить его снова, как только закончите отладку!), а затем используйте параметры для получения подробностей (подробности:
Вывод в консоль имеет формат, аналогичный тому, который используется библиотекой Monolog (хотя Monolog не используется для генерации вывода).
Например, параметр
Параметр расширенных подробностей
И, наконец, параметр отладки
Отладка пользовательских заданий
Вы можете добавить дополнительную информацию для отладки в ваших собственных заданиях.
Добавьте функцию ниже в ваш класс задания, для выова функции
Затем вы можете вызвать функцию log() в коде вашего задания, для вывода информации в консоль, когда Job Runner запущен с режимом подробностей.
Например, посмотрите на тестовое задание, включенное в плагин (
Код выше сгенерирует следующий вывод, если Job Runner запушен в режиме отдадки:
Если задание запущено в «тихом» режиме, вывод не будет показан, но, что более важно, если этот плагин отключен, код логгинга не требуется удалять из кода задания. Важная часть, это строка
Отладка пользовательских заданий Cron
Используя схожий механизм, можно добавить отладку в пользовательские задания Cron:
Добавьте немного отличающуюся функцию в код вашего задания Cron для вызова функции
Затем, просто вызовите что-то вроде
Logger Trait
Так же доступен trait, который вы можете подключать в собственные классы:
Нет необходимости удалять код ведения журнала или отладки - при запуске
Версия для XenForo 2.0 и 2.1:
xf:run-jobs
, представленной в XF 2.2.Команда названа
hg:run-jobs
и делает вещи, схожие с xf:run-jobs
, но с большей функциональностью и настройками.Функции
Основные функции плагина:
- Позволяет командам выполнять работы/задачи cron до 10 минут, даже при запуске каждую минуту из задачи cron (использует файл блокировки для предотвращения одновременного выполнения нескольких операций) — идеально подходит для повышения производительности заданий на сайтах с высоким трафиком
- Обширные данные отладки, доступные для тестирования и выявления проблем с работами и задачами cron
- Замена
xf:run-jobs
Этот плагин требует PHP 7.0 или выше и был протестирован на XenForo 2.2.0 beta 1.
Установка
Установите плагин так же, как и любой другой.
После установки перейдите в
Настройки → Система и производительность
и установите настройку Job run trigger
в Server based trigger
Для начала, вам следует проверить, что Job Runner функционирует. Выполните в консоли команду ниже:
Bash:
$ php <path to your forum root>/cmd.php hg:run-jobs
/srv/www/xenforo/community
, команда будет выглядеть так:
Bash:
$ php /srv/www/xenforo/community/cmd.php hg:run-jobs
Выполнение этой команды приведет к выполнению всех невыполненных заданий, а затем завершится сообщением о том, есть ли еще задания, ожидающие выполнения, или нет. При выполнении этой команды из cron рекомендуется использовать флаг --quiet (или -q) для отключения вывода.
Когда вы убедитесь, что средство выполнения заданий работает правильно, вам нужно будет создать свою собственную задачу cron, чтобы запускать ее по расписанию по вашему выбору.
Примечание: если у вас уже настроена задача cron для запуска
xf:run-jobs
, просто отключите ее и замените идентичной задачей, которая вместо этого запускает hg:run-jobs
.Метод #1: Использование crontab.
Рекомендуется запускать это задание cron от имени пользователя веб-сервера для предотвращения возможных проблем с правами.
Например, для Ubuntu с пользователем веб-сервера
www-data
, установите задачу cron с помощью этой команды:
Bash:
$ sudo crontab -u www-data -e
Bash:
* * * * * php /path/to/your/forum/root/cmd.php --quiet hg:run-jobs
Метод #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 hg:run-jobs
webserver-user
заменено на имя пользователя вашего веб-сервера и изменено имя директории.Опять же, используя предыдущий пример, где пользователь веб-сервера —
www-data
, а корень форума — /srv/www/xenforo/community
, можно выполнить следующую команду для создания файла cron:
Bash:
echo "* * * * * www-data php /srv/www/xenforo/community/cmd.php --quiet hg:run-jobs" | sudo tee -a /etc/cron.d/xenforo
Crontab и cron.d будут запускать обработчик заданий каждую минуту, проверяя наличие невыполненных заданий, которые нужно запустить.
По умолчанию job runner будет работать не более 30 секунд, выполняя все невыполненные задания, пока в очереди не останется выполняемых заданий.
Обновление плагина с v1.x после обновления XenForo до v2.2
v2.0 изменяет имя команды и максимально допустимое время выполнения. Также обратите внимание, что параметр
--time
в v1.x был переименован в --max-execution-time
в соответствии с основным исполнителем заданий, предоставленным в XF v2.2.Для обновления:
- Обновитесь до XenForo версии v2.2 RC2 или новее
- Уставивите плагин версии v2.0.x
- Измените задание cron на
hg:run-jobs
вместоxf:run-jobs
- Если вы использовали параметр
--time option
, переименуйте его в--max-execution-time
- Необязательно: настройте параметр
--max-execution-time
на любое значение до 600 секунд (10 минут), чтобы обработка задания занимала столько времени, сколько нужно. Например:--max-execution-time = 180
позволит исполнителю задания выполняться до 3 минут за раз.
Настройки → Система и производительность
в настройке Job run trigger
Настройка
Вы можете настроить максимальное время выполнения задания, указав параметр --time=[ВРЕМЯ] в консоли.
Например, увеличим время выполнения job runner`а до 45 секунд:
Bash:
$ php <path to your forum root>/cmd.php --time=45 hg:run-jobs
Этот плагнин использует файлы блокировки для предотвращения одновременного выполнения нескольких команд исполнителей заданий, что также позволяет запускать команду в течение более длительных периодов времени на загруженных сайтах.
Максимально допустимое время выполнения составляет 10 минут (600 секунд). Команда будет выполняться до тех пор, пока не будет найдено невыполненных заданий, а затем остановится, поэтому время выполнения обычно составляет всего несколько секунд.
Для дальнейшей настройки выполнения вашего задания вы также можете настроить максимальное время, в течение которого каждое задание может выполняться.
Это настраивается с помощью параметра XenForo config.php:
PHP:
$config['jobMaxRunTime'] = 8;
jobMaxRunTime
настраивает количество времени в секундах, в течение которого будет разрешена обработка заданий, прежде чем они будут приостановлены для дальнейшей обработки на другом обходе, если это возможно. Параметр по умолчанию оптимизирован для запуска задания из браузера, поэтому, чтобы задания могли выполняться дольше в среде CLI, вы можете изменить это значение на более высокое значение.В общем, рекомендуется, чтобы этот параметр оставался относительно небольшим, чтобы избежать ситуации, когда одно очень большое задание может помешать своевременному выполнению других заданий. Может потребоваться поэкспериментировать, чтобы найти оптимальное значение для загрузки вашего сервера и размера форума. В случае сомнений оставьте значение по умолчанию — 8 секунд.
Использование
Команда
run-jobs
должна выполняться автоматически через задание cron task, как в инструкциях выше.Отображение заданий
Команда
hg:show-jobs
список текущих заданий, ожидающих выполнения, чтобы вы могли увидеть, насколько заполнена очередь заданий.По умолчанию будут показаны только следующие 100 запланированных заданий, вы можете использовать параметр --all, чтобы показать полный список всех ожидающих заданий.
В списке всегда должно быть хотя бы одно задание (основное задание Cron). Для XF 2.1 и выше вы также увидите задание проверки обновления.
Bash:
$ php cmd.php xf:show-jobs
2 pending jobs found
+----------------+-----------------+----------------------+----------------------+
| Key | Class | Next Run | Last Run |
+----------------+-----------------+----------------------+----------------------+
| cron | XF\Job\Cron | 11-Apr-2019 10:52:01 | 11-Apr-2019 10:52:31 |
| xfUpgradeCheck | XF:UpgradeCheck | 12-Apr-2019 00:12:21 | 10-Apr-2019 21:24:03 |
+----------------+-----------------+----------------------+----------------------+
The current time is: 11-Apr-2019 10:52:31 (UTC+10:00)
Отладка заданий
Существуют обширные инструменты отладки, помогающие выявлять проблемы с задачами Jobs и Cron.
Для запуска режима отладки, сначала отключите Unix cron, который запускает выполнение заданий автоматически (не забудьте включить его снова, как только закончите отладку!), а затем используйте параметры для получения подробностей (подробности:
-v
, расширенные подробности: -vv
или отладка: -vvv
) для команды hg:run-jobs
, чтобы установить уровень подробностей для вывода.Вывод в консоль имеет формат, аналогичный тому, который используется библиотекой Monolog (хотя Monolog не используется для генерации вывода).
Например, параметр
-v
:
Bash:
$ php cmd.php hg:run-jobs -v
[2019-11-27 23:53:09] XF\Job\Cron: Cron entry XF\Cron\CleanUp::runUserDowngrade executed in 0.01 seconds
[2019-11-27 23:53:09] XF\Job\Cron: Cron entry Hampel\LogDigest\Cron\SendLogs::serverError executed in 0.00 seconds
[2019-11-27 23:53:09] XF\Job\Cron: Cron entry XF\Cron\MemberStats::rebuildMemberStatsCache executed in 0.00 seconds
[2019-11-27 23:53:09] XF\Job\Cron: Cron entry Hampel\Slack\Cron\NotifyLogs::notify executed in 0.03 seconds
[2019-11-27 23:53:09] XF\Job\Cron: Cron entry XF\Cron\Feeder::importFeeds executed in 0.01 seconds
[2019-11-27 23:53:09] XF\Job\Cron: Cron entry XFMG\Cron\RandomCache::generateRandomMediaCache executed in 0.07 seconds
[2019-11-27 23:53:09] XF\Job\Cron: Cron entry XF\Cron\EmailBounce::process executed in 0.00 seconds
[2019-11-27 23:53:09] XF\Job\Cron: Cron entry XF\Cron\Counters::rebuildForumStatistics executed in 0.02 seconds
[2019-11-27 23:53:09] XF\Job\Cron: Job executed in 0.20 seconds
No more runnable jobs pending
-vv
добавляет контекст, обычно о JobResult
:
Bash:
$ php cmd.php hg:run-jobs -vv
[2019-11-27 23:49:49] XF\Job\Cron: Cron entry Hampel\Slack\Cron\NotifyLogs::notify executed in 0.01 seconds {"entry_id":"slackNotifyServerErrors","cron_class":"Hampel\\Slack\\Cron\\NotifyLogs","cron_method":"notify","run_rules":{"day_type":"dom","dom":{"0":-1},"hours":{"0":-1},"minutes":{"0":-1}},"active":true,"next_run":1574898543,"addon_id":"Hampel\/Slack"}
[2019-11-27 23:49:49] XF\Job\Cron: Cron entry Hampel\SparkPost\Cron\MessageEvents::fetchMessageEvents executed in 0.00 seconds {"entry_id":"sparkpostMessageEvents","cron_class":"Hampel\\SparkPost\\Cron\\MessageEvents","cron_method":"fetchMessageEvents","run_rules":{"day_type":"dom","dom":{"0":-1},"hours":{"0":-1},"minutes":{"0":19,"1":49}},"active":true,"next_run":1574898543,"addon_id":"Hampel\/SparkPost"}
[2019-11-27 23:49:49] XF\Job\Cron: Job executed in 0.03 seconds {"completed":false,"jobId":2,"continueDate":1574898603,"continueDate_formatted":"2019-11-27 23:50:03 UTC","statusMessage":"Running... Cron entries"}
[2019-11-27 23:49:49] Hampel\SparkPost:MessageEvent: Job executed in 0.83 seconds {"completed":true,"jobId":12,"continueDate":null,"continueDate_formatted":"","statusMessage":""}
No more runnable jobs pending
-vvv
добавляет расширенную информацию о задании:
Bash:
$ php cmd.php hg:run-jobs -vvv
[2019-11-27 23:48:03] XF\Job\Cron: Cron entry XF\Cron\Feeder::importFeeds executed in 0.01 seconds {"entry_id":"feeder","cron_class":"XF\\Cron\\Feeder","cron_method":"importFeeds","run_rules":{"day_type":"dom","dom":{"0":-1},"hours":{"0":-1},"minutes":{"0":2,"1":12,"2":22,"3":32,"4":42,"5":52}},"active":true,"next_run":1574879524,"addon_id":"XF"} {}
[2019-11-27 23:48:03] XF\Job\Cron: Cron entry XF\Cron\Counters::rebuildForumStatistics executed in 0.02 seconds {"entry_id":"forumStatistics","cron_class":"XF\\Cron\\Counters","cron_method":"rebuildForumStatistics","run_rules":{"day_type":"dom","dom":{"0":-1},"hours":{"0":-1},"minutes":{"0":3,"1":13,"2":23,"3":33,"4":43,"5":53}},"active":true,"next_run":1574879584,"addon_id":"XF"} {}
[2019-11-27 23:48:03] XF\Job\Cron: Cron entry XF\Cron\MemberStats::rebuildMemberStatsCache executed in 0.03 seconds {"entry_id":"memberStatsCache","cron_class":"XF\\Cron\\MemberStats","cron_method":"rebuildMemberStatsCache","run_rules":{"day_type":"dom","dom":{"0":-1},"hours":{"0":-1},"minutes":{"0":0,"1":10,"2":20,"3":30,"4":40,"5":50}},"active":true,"next_run":1574880004,"addon_id":"XF"} {}
[2019-11-27 23:48:03] XF\Job\Cron: Cron entry XF\Cron\Trophy::runTrophyCheck executed in 0.00 seconds {"entry_id":"trophy","cron_class":"XF\\Cron\\Trophy","cron_method":"runTrophyCheck","run_rules":{"day_type":"dom","dom":{"0":-1},"hours":{"0":-1},"minutes":{"0":40}},"active":true,"next_run":1574880004,"addon_id":"XF"} {}
[2019-11-27 23:48:03] XF\Job\Cron: Cron entry XFMG\Cron\Statistics::cacheGalleryStatistics executed in 0.01 seconds {"entry_id":"xfmgCacheStats","cron_class":"XFMG\\Cron\\Statistics","cron_method":"cacheGalleryStatistics","run_rules":{"day_type":"dom","dom":{"0":-1},"hours":{"0":-1},"minutes":{"0":10,"1":40}},"active":true,"next_run":1574880004,"addon_id":"XFMG"} {}
[2019-11-27 23:48:03] XF\Job\Cron: Cron entry XF\Cron\CleanUp::expireTempUserChanges executed in 0.00 seconds {"entry_id":"expireTempUserChanges","cron_class":"XF\\Cron\\CleanUp","cron_method":"expireTempUserChanges","run_rules":{"day_type":"dom","dom":{"0":-1},"hours":{"0":-1},"minutes":{"0":42}},"active":true,"next_run":1574880124,"addon_id":"XF"} {}
[2019-11-27 23:48:03] XF\Job\Cron: Cron entry XFMG\Cron\RandomCache::generateRandomAlbumCache executed in 0.02 seconds {"entry_id":"xfmgGenerateRandomAlbum","cron_class":"XFMG\\Cron\\RandomCache","cron_method":"generateRandomAlbumCache","run_rules":{"day_type":"dom","dom":{"0":-1},"hours":{"0":-1},"minutes":{"0":12,"1":42}},"active":true,"next_run":1574880124,"addon_id":"XFMG"} {}
[2019-11-27 23:48:03] XF\Job\Cron: Cron entry XF\Cron\EmailUnsubscribe::process executed in 0.00 seconds {"entry_id":"emailUnsubscribe","cron_class":"XF\\Cron\\EmailUnsubscribe","cron_method":"process","run_rules":{"day_type":"dom","dom":{"0":-1},"hours":{"0":-1},"minutes":{"0":13,"1":43}},"active":true,"next_run":1574880184,"addon_id":"XF"} {}
[2019-11-27 23:48:03] XF\Job\Cron: Cron entry XF\Cron\Ban::deleteExpiredBans executed in 0.01 seconds {"entry_id":"deleteExpiredBans","cron_class":"XF\\Cron\\Ban","cron_method":"deleteExpiredBans","run_rules":{"day_type":"dom","dom":{"0":-1},"hours":{"0":-1},"minutes":{"0":45}},"active":true,"next_run":1574880304,"addon_id":"XF"} {}
[2019-11-27 23:48:03] XF\Job\Cron: Job executed in 0.32 seconds {"completed":false,"jobId":2,"continueDate":1574898543,"continueDate_formatted":"2019-11-27 23:49:03 UTC","statusMessage":"Running... Cron entries"} {"job_id":2,"unique_key":"cron","execute_class":"XF\\Job\\Cron","execute_data":{},"manual_execute":0,"trigger_date":1574879464,"last_run_date":1574879405,"trigger_date_formatted":"2019-11-27 18:31:04 UTC","last_run_date_formatted":"2019-11-27 18:30:05 UTC"}
[2019-11-27 23:48:03] Hampel\SparkPost:MessageEvent: Job executed in 0.90 seconds {"completed":true,"jobId":10,"continueDate":null,"continueDate_formatted":"","statusMessage":""} {"job_id":10,"unique_key":"SparkPostMessageEvents","execute_class":"Hampel\\SparkPost:MessageEvent","execute_data":{},"manual_execute":0,"trigger_date":1574898483,"last_run_date":null,"trigger_date_formatted":"2019-11-27 23:48:03 UTC","last_run_date_formatted":""}
[2019-11-27 23:48:03] Hampel\SparkPost:EmailBounce: Job executed in 0.02 seconds {"completed":true,"jobId":11,"continueDate":null,"continueDate_formatted":"","statusMessage":""} {"job_id":11,"unique_key":"SparkPostEmailBounce","execute_class":"Hampel\\SparkPost:EmailBounce","execute_data":{},"manual_execute":0,"trigger_date":1574898483,"last_run_date":null,"trigger_date_formatted":"2019-11-27 23:48:03 UTC","last_run_date_formatted":""}
No more runnable jobs pending
Отладка пользовательских заданий
Вы можете добавить дополнительную информацию для отладки в ваших собственных заданиях.
Добавьте функцию ниже в ваш класс задания, для выова функции
logJobProgress
класса Logger
:
PHP:
protected function log($message, array $context = [])
{
// проверяем, доступен ли логгер сейчас и прекращаем выполнение функции, если нет
if (!isset($this->app['cli.logger'])) return;
/** @var Logger $logger */
$logger = $this->app['cli.logger'];
$logger->logJobProgress($message, $context, $this);
}
Затем вы можете вызвать функцию log() в коде вашего задания, для вывода информации в консоль, когда Job Runner запущен с режимом подробностей.
Например, посмотрите на тестовое задание, включенное в плагин (
Hampel\JobRunner\Job\TestJob
):
PHP:
public function run($maxRunTime)
{
$this->log("About to start test job", $this->data);
$mail = $this->app->mailer()->newMail();
$mail->setTo($this->data['email']);
$mail->setContent(
"Test job",
"This is an email sent from a test job"
);
$sent = $mail->send();
$this->log("Sent mail", ['sent' => $sent]);
return $this->complete();
}
Код выше сгенерирует следующий вывод, если Job Runner запушен в режиме отдадки:
Bash:
$ php cmd.php hg:run-jobs -vvv
[2019-11-28 00:26:21] Hampel\JobRunner:TestJob: About to start test job {"email":"[email protected]"} {"job_id":17,"class":"Hampel\\JobRunner\\Job\\TestJob","status_message":"Testing jobs","data":{"email":"[email protected]"},"execution_time":"0.00"}
[2019-11-28 00:26:21] Hampel\JobRunner:TestJob: Sent mail {"sent":1} {"job_id":17,"class":"Hampel\\JobRunner\\Job\\TestJob","status_message":"Testing jobs","data":{"email":"[email protected]"},"execution_time":"0.95"}
[2019-11-28 00:26:21] Hampel\JobRunner:TestJob: Job executed in 0.95 seconds {"completed":true,"jobId":17,"continueDate":null,"continueDate_formatted":"","statusMessage":""} {"job_id":17,"unique_key":null,"execute_class":"Hampel\\JobRunner:TestJob","execute_data":{"email":"[email protected]"},"manual_execute":0,"trigger_date":1574900777,"last_run_date":null,"trigger_date_formatted":"2019-11-28 00:26:17 UTC","last_run_date_formatted":""}
No more runnable jobs pending
if(!isset(\XF::app['cli.logger'])) return;
, которая прекращает выполнение функции, если класс Logger
не доступен.Отладка пользовательских заданий Cron
Используя схожий механизм, можно добавить отладку в пользовательские задания Cron:
Добавьте немного отличающуюся функцию в код вашего задания Cron для вызова функции
log
класса Logger
:
PHP:
protected static function log($message, array $context = [])
{
// проверяем, доступен ли логгер сейчас и прекращаем выполнение функции, если нет
if (!isset(\XF::app['cli.logger'])) return;
/** @var Logger $logger */
$logger = \XF::app['cli.logger'];
$logger->log("XF\Job\Cron", $message, $context);
}
Затем, просто вызовите что-то вроде
self::log("some message about something happening", ['key' => 'value']);
в своем коде для вывода информации в консоль, когда Job Runner запущен с режимом подробностей.Logger Trait
Так же доступен trait, который вы можете подключать в собственные классы:
Hampel\JobRunner\Cli\LoggerTrait
, который реализует некоторые базовые функции ведения журнала, которые вы можете вызвать из своего кода:- getLogger
- log
- logQuiet (будет отображено, даже если опция
-q
передана для Job Runner) - use this for critical errors only - logNormal
- logVerbose
- logVeryVerbose
- debug
hg:run-jobs
в нормальном или «тихом режиме» вывод не будет отображен.Нет необходимости удалять код ведения журнала или отладки - при запуске
hg:run-jobs
в нормальном или тихом режиме ни один из выходных данных не отображается, если он не использует logNormal
или logQuiet
(который следует использовать только для ошибки).Версия для XenForo 2.0 и 2.1: