Работа через консоль
Платформа поддерживает работу через консоль аналогично работе в браузере.
Запуск http://mysite.com/page/param/ аналогичен cd /path/to/project && php ./console.php /page/param
Вы запускаете файл console.php, расположенный в корне платформы, передавая ему в качестве параметров часть пути url.
В дистрибутив включен контроллер для работы из консоли - Frontend_Console_Controller, этот контроллер упрощает описание и запуск действий (action), фоновых заданий (background task), заданий по расписанию (cron task)
Для того, чтобы активировать работу консоли, необходимо в разделе Pages (Страницы) опубликовать страницу console, доступ к этой странице будет возможен только через консоль (браузер будет перенаправлен на главную страницу). Для роутинга, на основе файловых путей, донастройка не требуется (main.php 'frontend_router' => 'Router_Path') см. подробнее Роутинг в DVelum
Действия (Actions)
Список предустановленный действий (actions) описан в файле конфигурации application/configs/dist/console.php, этот список представляет из себя связку action => adapter, где
action - вторая часть пути при обращении к консоли php ./console.php /console/action/
adapter - класс описывающий само действие, отнаследованный от Console_Action
Пример запуска предустановленного действия "Синхронизация ORM" : php ./console.php /console/buildDb
Фоновые задачи (Tasks)
Фоновые задачи предполагают запуск по расписанию, бывают 2ух типов:
-
управляемые через интерфейс бэк оффиса
-
неуправляемые
Оба типа используют файловые блокировки для предотвращения одновременного запуска нескольких экземпляров задания.
Запускаются консольной командой:
cd /path/to/project/ && php ./console.php /[controller]/[type]/[action]/[time_limit]/[thread] (папка на уровень выше www)
controller - код контроллера, описывается в интерфейсе управления модулями публичной части, в нашем случае "сonsole"
type - тип задачи task / job
task - управляемая фоновая задача с возможностью взаимодействия и отслеживания состояния, отнаследована от Task_Cronjob_abstract, существующая в одном экземпляре в один момент времени.
Достоинства: можно отслеживать статус выполнения через интерфейс управления, ставить на паузу, перезапускать, отправлять команды
Недостатки: накладные расходы на обработку сигналов, в коде необходимо переодически вызывать метод синхронизации состояния
Необходимо помнить, что Task_Cronjob_Abstract работает с таблицами Memory (это необходимо учитывать при настройке mysql). Если вы используете фоновые задачи, советуем включить в планировщик задачу по очистке этих таблиц (clearmemory).
job - неуправляемая фоновая задача, отнаследована от Cronjob_Abstract, существующая в одном экземпляре в один момент времени
Достоинства: простота в описании, скорость работы
Недостатки: неуправляема
(рекомендуемый тип)
action - имя действия, ключ в файле настроек application/configs/dist/cronjob.php
time_limit - лимит времени исполнения (фоновые задачи блокируют запуск нескольких одинаковых экземпляров при помощи механизма файловых блокировок);
thread - номер потока (если необходим параллельный запуск нескольких экземпляров).
Полный список настроек фоновых заданий находиться в файле application/configs/dist/cronjob.php, где секция cron_config (общие дефолтные настройки и настройки механизма блокировок).
В большинстве случаев используется адаптер фоновой задачи "adapter", который занимается непосредственно выполнением задачи (указывается в настройках конкретной задачи). Так же указывается user_id, от имени которого идет выполнение.