ModuleCron
Package | framework.modules |
---|---|
Inheritance | class ModuleCron » ModuleORM » Module » LsObject |
Since | 2.0 |
Source Code | /framework/classes/modules/cron/Cron.class.php |
Модуль управления центральным кроном - запуск запланированных задач
Protected Properties
Property | Type | Description | Defined By |
---|---|---|---|
_aBehaviors | Список поведений в виде готовых объектов, формируется автоматически | LsObject | |
aBehaviors | array | Список поведений | LsObject |
bIsInit | bool | Указывает на то, была ли проведенна инициализация модуля | Module |
oMapperORM | MapperORM | Объект маппера ORM | ModuleORM |
Public Methods
Method | Description | Defined By |
---|---|---|
AddBehaviorHook() | Добавляет хук поведения | LsObject |
AttachBehavior() | Присоединяет поведение к объекту | LsObject |
CreateTask() | Создает новую задачу в БД | ModuleCron |
DeleteItemsByFilter() | Удаляет сущности по фильтру | ModuleORM |
DetachBehavior() | Отсоединяет поведение от объекта | LsObject |
GetAggregateFunctionByFilter() | Получить значение агрегирующей функции | ModuleORM |
GetBehavior() | Возвращает объект поведения по его имени | LsObject |
GetBehaviors() | Возвращает все объекты поведения | LsObject |
GetByFilter() | Получить сущность по фильтру | ModuleORM |
GetCountItemsByFilter() | Получить количество сущностей по фильтру | ModuleORM |
GetCountItemsByJoinEntity() | ModuleORM | |
GetItemsByArray() | Возвращает список сущностей по фильтру | ModuleORM |
GetItemsByFilter() | Получить список сущностей по фильтру | ModuleORM |
GetItemsByJoinEntity() | ModuleORM | |
Init() | Инициализация | ModuleORM |
LoadTree() | Для сущностей со связью RELATION_TYPE_TREE возвращает список сущностей в виде дерева | ModuleORM |
RemoveBehaviorHook() | Удаляет хук поведения | LsObject |
RemoveTasksByPlugin() | Удаляет все крон-задачи конкретного плагина | ModuleCron |
RunBehaviorHook() | Запускает хук поведения на выполнение | LsObject |
RunMain() | Запускает выполнение центрального крона | ModuleCron |
RunTask() | Запускает задачу на выполнение | ModuleCron |
SetInit() | Помечает модуль как инициализированный | Module |
Shutdown() | Метод срабатывает при завершении работы ядра | Module |
__call() | Ставим хук на вызов неизвестного метода и считаем что хотели вызвать метод какого либо модуля. | ModuleORM |
__clone() | Блокируем копирование/клонирование объекта | Module |
__construct() | Конструктор, запускается автоматически при создании объекта | LsObject |
__get() | Обработка доступа к объекты поведения | LsObject |
buildTree() | Построение дерева | ModuleORM |
isInit() | Возвращает значение флага инициализации модуля | Module |
Protected Methods
Method | Description | Defined By |
---|---|---|
PrepareBehaviors() | Инициализация поведений | LsObject |
WriteLog() | Записывает сообщение в лог крона | ModuleCron |
_AddEntity() | Добавление сущности в БД | ModuleORM |
_DeleteEntity() | Удаление сущности из БД | ModuleORM |
_GetAncestorsOfEntity() | Для сущности со связью RELATION_TYPE_TREE возвращает список всех предков | ModuleORM |
_GetChildrenOfEntity() | Для сущности со связью RELATION_TYPE_TREE возвращает список прямых потомков | ModuleORM |
_GetDescendantsOfEntity() | Для сущности со связью RELATION_TYPE_TREE возвращает список всех потомков | ModuleORM |
_GetParentOfEntity() | Для сущности со связью RELATION_TYPE_TREE возвращает предка | ModuleORM |
_LoadMapperORM() | Загрузка маппера ORM | ModuleORM |
_NormalizeEntityRootName() | Приводит название сущности к единому формату полного имени класса | ModuleORM |
_ReloadEntity() | Обновляет данные сущности из БД | ModuleORM |
_SaveEntity() | Сохранение сущности в БД | ModuleORM |
_ShowColumnsFrom() | Список полей сущности | ModuleORM |
_ShowPrimaryIndexFrom() | Primary индекс сущности | ModuleORM |
_UpdateEntity() | Обновление сущности в БД | ModuleORM |
_deleteManyToManyRelation() | Выполняет удаление всех связей many_to_many сущности | ModuleORM |
_setIndexesFromField() | Returns assotiative array, indexed by PRIMARY KEY or another field. | ModuleORM |
_setIndexesGroupField() | Возвращает сгруппированный массив по нужному полю | ModuleORM |
_setIndexesGroupJoinField() | Возвращает сгруппированный массив по нужному полю из данных таблицы связей | ModuleORM |
_updateManyToManyRelation() | Выполняет обновление связи many_to_many у сущности | ModuleORM |
Method Details
CreateTask()
method
public ModuleCron_EntityTask|string CreateTask($sTitle $sTitle, $sMethod $sMethod, $iPeriod $iPeriod, string $sPlugin=NULL)
| ||
$sTitle | $sTitle | |
$sMethod | $sMethod | |
$iPeriod | $iPeriod | |
$sPlugin | string | |
{return} | ModuleCron_EntityTask|string |
Source Code: /framework/classes/modules/cron/Cron.class.php#126 (show)
public function CreateTask($sTitle, $sMethod, $iPeriod, $sPlugin = null)
{
$sPlugin = $sPlugin ? Plugin::GetPluginCode($sPlugin) : '';
if ($oTask = $this->GetTaskByMethodAndPlugin($sMethod, $sPlugin)) {
return $oTask;
}
$oTask = Engine::GetEntity('ModuleCron_EntityTask');
$oTask->setTitle($sTitle);
$oTask->setMethod($sMethod);
$oTask->setPeriodRun($iPeriod);
$oTask->setPlugin($sPlugin);
$oTask->setState(self::TASK_STATE_ACTIVE);
if ($oTask->_Validate()) {
$oTask->Add();
return $oTask;
} else {
return $oTask->_getValidateError();
}
}
Создает новую задачу в БД Метод предназначен для использования в плагинах в момент их активации
RemoveTasksByPlugin()
method
public void RemoveTasksByPlugin($sPlugin $sPlugin)
| ||
$sPlugin | $sPlugin |
Source Code: /framework/classes/modules/cron/Cron.class.php#151 (show)
public function RemoveTasksByPlugin($sPlugin)
{
if ($sPlugin = Plugin::GetPluginCode($sPlugin)) {
$aTasks = $this->GetTaskItemsByPlugin($sPlugin);
foreach ($aTasks as $oTask) {
$oTask->Delete();
}
}
}
Удаляет все крон-задачи конкретного плагина
RunMain()
method
public void RunMain()
|
Source Code: /framework/classes/modules/cron/Cron.class.php#38 (show)
public function RunMain()
{
/**
* Получаем список активных задач
* TODO: можно сделать выборку нужных задач сразу из БД, а не сравнивать в php время
*/
$aTasks = $this->GetTaskItemsByFilter(array('state' => self::TASK_STATE_ACTIVE));
$aTasksReady = array();
foreach ($aTasks as $oTask) {
if (!$oTask->getDateRunLast() or (strtotime($oTask->getDateRunLast()) + $oTask->getPeriodRun() * 60 < time())) {
$aTasksReady[] = $oTask;
}
}
if (Config::Get('module.cron.use_fork')) {
$aResult = \iFixit\Forker\Forker::map($aTasksReady, function ($iIndex, $oTask) {
/**
* Производим переподключение к основной БД
*/
$this->Database_ReConnect();
$oTask->beforeRun(true);
return $oTask->run();
});
} else {
foreach ($aTasksReady as $oTask) {
$oTask->beforeRun(false);
$oTask->run();
}
}
}
Запускает выполнение центрального крона Выбирает необходимые задачи и выполняет их
RunTask()
method
public array RunTask($oTask $oTask)
| ||
$oTask | $oTask | |
{return} | array |
Source Code: /framework/classes/modules/cron/Cron.class.php#76 (show)
public function RunTask($oTask)
{
$aLog = array(
'state' => 'successful',
'return' => null,
);
/**
* Запускаем
*/
try {
$aLog['return'] = call_user_func(array($this, $oTask->getMethod()), $oTask);
} catch (Exception $e) {
$aLog['state'] = 'error';
$aLog['message'] = $e->getMessage() . ' (code:' . $e->getCode() . ';line:' . $e->getLine() . ')';
}
/**
* Обновляем количество пусков и дату последнего запуска
*/
$oTask->setCountRun($oTask->getCountRun() + 1);
$oTask->setDateRunLast(date('Y-m-d H:i:s'));
$oTask->Update();
/**
* Записываем в лог
*/
$this->WriteLog('Run cron task "' . $oTask->getTitleWithLang() . '"', $aLog);
return $aLog;
}
Запускает задачу на выполнение
WriteLog()
method
protected void WriteLog($sMsg $sMsg, array $aData=array (
))
| ||
$sMsg | $sMsg | |
$aData | array |
Source Code: /framework/classes/modules/cron/Cron.class.php#110 (show)
protected function WriteLog($sMsg, $aData = array())
{
$this->Logger_Notice($sMsg, $aData, 'cron');
}
Записывает сообщение в лог крона