Cron
Package | framework.engine |
---|---|
Inheritance | abstract class Cron » LsObject |
Since | 1.0 |
Source Code | /framework/classes/engine/Cron.class.php |
Абстрактный класс для работы с крон-процессами.
Например, его использует отложенная рассылка почтовых уведомлений для пользователей.
Обработчик крона не запускается автоматически(!!), его необходимо добавлять в системный крон (nix*: crontab -e)
Protected Properties
Property | Type | Description | Defined By |
---|---|---|---|
_aBehaviors | Список поведений в виде готовых объектов, формируется автоматически | LsObject | |
aBehaviors | array | Список поведений | LsObject |
bLogEnable | bool | Производить логирование или нет | Cron |
oLockFile | string | Дескриптор блокирующего файла | Cron |
sProcessName | string | Имя процесса, под которым будут помечены все сообщения в логах | Cron |
Public Methods
Method | Description | Defined By |
---|---|---|
AddBehaviorHook() | Добавляет хук поведения | LsObject |
AttachBehavior() | Присоединяет поведение к объекту | LsObject |
Client() | Клиентская функция будет переопределятся в наследниках класса | Cron |
DetachBehavior() | Отсоединяет поведение от объекта | LsObject |
Exec() | Основной метод крон-процесса. | Cron |
GetBehavior() | Возвращает объект поведения по его имени | LsObject |
GetBehaviors() | Возвращает все объекты поведения | LsObject |
Log() | Делает запись в лог | Cron |
RemoveBehaviorHook() | Удаляет хук поведения | LsObject |
RunBehaviorHook() | Запускает хук поведения на выполнение | LsObject |
Shutdown() | Завершение крон-процесса | Cron |
__call() | Ставим хук на вызов неизвестного метода и считаем что хотели вызвать метод какого либо модуля | LsObject |
__clone() | При клонировании сбрасываем поведения | LsObject |
__construct() | Cron | |
__destruct() | Вызывается при уничтожении объекта | Cron |
__get() | Обработка доступа к объекты поведения | LsObject |
isLock() | Проверяет уникальность создаваемого процесса | Cron |
unsetLock() | Снимает блокировку на повторный процесс | Cron |
Protected Methods
Method | Description | Defined By |
---|---|---|
PrepareBehaviors() | Инициализация поведений | LsObject |
Property Details
bLogEnable
property
protected bool $bLogEnable;
Производить логирование или нет
oLockFile
property
protected string $oLockFile;
Дескриптор блокирующего файла Если этот файл существует, то крон не запустится повторно.
sProcessName
property
protected string $sProcessName;
Имя процесса, под которым будут помечены все сообщения в логах
Method Details
Client()
method
abstract public void Client()
|
Source Code: /framework/classes/engine/Cron.class.php#159 (show)
abstract public function Client();
Клиентская функция будет переопределятся в наследниках класса для обеспечивания выполнения основного функционала.
Exec()
method
public string Exec()
| ||
{return} | string |
Source Code: /framework/classes/engine/Cron.class.php#113 (show)
public function Exec()
{
/**
* Если выполнение процесса заблокирован, завершаемся
*/
if ($this->isLock()) {
$this->Log('Try to exec already run process');
return;
}
/**
* Здесь мы реализуем дополнительную логику:
* логирование вызова, обработка ошибок,
* буферизация вывода.
*/
ob_start();
$this->Client();
/**
* Получаем весь вывод функции.
*/
$sContent = ob_get_contents();
ob_end_clean();
return $sContent;
}
Основной метод крон-процесса. Реализует логику работы крон процесса с последующей передачей управления на пользовательскую функцию
Log()
method
public void Log(string $sMsg)
| ||
$sMsg | string | Сообщение для записи в лог |
Source Code: /framework/classes/engine/Cron.class.php#79 (show)
public function Log($sMsg)
{
if ($this->bLogEnable and Config::Get('sys.logs.cron')) {
$sMsg = $this->sProcessName . ': ' . $sMsg;
$this->Logger_Notice($sMsg, array(), 'cron');
}
}
Делает запись в лог
Shutdown()
method
public void Shutdown()
|
Source Code: /framework/classes/engine/Cron.class.php#141 (show)
public function Shutdown()
{
$this->unsetLock();
$this->Log('Cron process ended');
}
Завершение крон-процесса
__construct()
method
public void __construct(string|null $sLockFile=NULL)
| ||
$sLockFile | string|null | Полный путь до лок файла, например Config::Get('sys.cache.dir').'notify.lock' |
Source Code: /framework/classes/engine/Cron.class.php#55 (show)
public function __construct($sLockFile = null)
{
parent::__construct();
$this->sProcessName = get_class($this);
$oEngine = Engine::getInstance();
/**
* Инициализируем ядро
*/
$oEngine->Init();
if (!empty($sLockFile)) {
$this->oLockFile = fopen($sLockFile, 'a');
}
/**
* Инициализируем лог и делает пометку о старте процесса
*/
$this->Log('Cron process started');
}
__destruct()
method
public void __destruct()
|
Source Code: /framework/classes/engine/Cron.class.php#150 (show)
public function __destruct()
{
$this->Shutdown();
}
Вызывается при уничтожении объекта
isLock()
method
public bool isLock()
| ||
{return} | bool |
Source Code: /framework/classes/engine/Cron.class.php#92 (show)
public function isLock()
{
return ($this->oLockFile && !flock($this->oLockFile, LOCK_EX | LOCK_NB));
}
Проверяет уникальность создаваемого процесса
unsetLock()
method
public bool unsetLock()
| ||
{return} | bool |
Source Code: /framework/classes/engine/Cron.class.php#102 (show)
public function unsetLock()
{
return ($this->oLockFile && @flock($this->oLockFile, LOCK_UN));
}
Снимает блокировку на повторный процесс