MODX. Обработка сниппетов по крону и компонент CronManager

Для того, чтобы обработка самописного сниппета срабатывала по крону, конструкция кода должна быть примерно такой:

define('MODX_API_MODE', true);
require '---- /public_html/index.php';
$modx->getService('error', 'error.modError');

Тут код который должен отрабатываться

После чего стоит добавить файл со сниппетом в crontab список на сервере. Способ добавления зависит от сервера/хостинга, где-то есть специальные панели, где-то придется воспользоваться unix командой «crontab -e».

Можно использовать более простой в понимании вариант с использованием компонента:

CronManager

CronManager — компонент упрощающий настройку отработки скриптов по крону. Он позволяет вносить все необходимые изменения в админке MODX.

  1. Скачать и установить пакет CronManager;
  2. Добавить CronManager (файл /path/to/your/modx/assets/components/cronmanager/cron.php) в обработку на сервере, в crontab список. Способ добавления зависит от сервера/хостинга, где-то есть специальные панели, где-то придется воспользоваться unix командой «crontab -e» и добавить в cronjob аналогичную строку
    cd /path/to/your/modx/installation/assets/components/cronmanager/ && php cron.php

    Интервал запроса зависит от нужд, но если вы хотите иметь возможность полного управления периодом отрабатывания сниппетов, следует установить «каждую минуту, каждый день в каждом месяце»;

  3. Перейти в меню управления пакетом Приложения (Extras) => CronManager;

  4. Создать новую задачу (кнопка create new cronjob), задав имя сниппета и интервал повторения (будет срабатывать не чаще чем настройка обработки файла cron.php на сервере);

  5. После сохранения необходимо отредактировать появившуюся в списке задачу, установив активность, и, при необходимости, поменяв настройки.

Обратите внимание, если скрипт сработал, но не дал никакого результата, то можно посмотреть файл cronlog, заглянуть в который можно кликнув правой клавишей мыши по задаче. 

Тонкости

В некоторых функциях лучше указывать полный путь до файла:

$set = file_get_contents(MODX_BASE_PATH.'assets/script.php');
return $set;