Работа через консоль

Платформа поддерживает работу через консоль аналогично работе в браузере.

Запуск  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, от имени которого идет выполнение.