Cron
Package | engine |
---|---|
Inheritance | class Cron » LsObject |
Since | 1.0 |
Source Code | /engine/classes/Cron.class.php |
Абстрактный класс для работы с крон-процессами.
Например, его использует отложенная рассылка почтовых уведомлений для пользователей.
Обработчик крона не запускается автоматически(!!), его необходимо добавлять в системный крон (nix*: crontab -e)
Protected Properties
Property | Type | Description | Defined By |
---|---|---|---|
oEngine | Engine | Объект ядра | Cron |
oLockFile | string | Дескриптор блокирующего файла | Cron |
sProcessName | string | Имя процесса, под которым будут помечены все сообщения в логах | Cron |
Public Methods
Method | Description | Defined By |
---|---|---|
Client() | Клиентская функция будет переопределятся в наследниках класса | Cron |
Exec() | Основной метод крон-процесса. | Cron |
Log() | Делает запись в лог | Cron |
Shutdown() | Завершение крон-процесса | Cron |
__call() | Ставим хук на вызов неизвестного метода и считаем что хотели вызвать метод какого либо модуля | Cron |
__construct() | Cron | |
__destruct() | Вызывается при уничтожении объекта | Cron |
isLock() | Проверяет уникальность создаваемого процесса | Cron |
unsetLock() | Снимает блокировку на повторный процесс | Cron |
Property Details
oEngine
property
protected Engine $oEngine;
Объект ядра
oLockFile
property
protected string $oLockFile;
Дескриптор блокирующего файла Если этот файл существует, то крон не запустится повторно.
sProcessName
property
protected string $sProcessName;
Имя процесса, под которым будут помечены все сообщения в логах
Method Details
Client()
method
public void Client()
|
Source Code: /engine/classes/Cron.class.php#141 (show)
public function Client(){
throw new Exception('Call undefined client function');
}
Клиентская функция будет переопределятся в наследниках класса для обеспечивания выполнения основного функционала.
Exec()
method
public string Exec()
| ||
{return} | string |
Source Code: /engine/classes/Cron.class.php#102 (show)
public function Exec() {
/**
* Если выполнение процесса заблокирован, завершаемся
*/
if($this->isLock()) {
throw new Exception('Try to exec already run process');
}
/**
* Здесь мы реализуем дополнительную логику:
* логирование вызова, обработка ошибок,
* буферизация вывода.
*/
ob_start();
$this->Client();
/**
* Получаем весь вывод функции.
*/
$sContent=ob_get_contents();
ob_end_clean();
return $sContent;
}
Основной метод крон-процесса. Реализует логику работы крон процесса с последующей передачей управления на пользовательскую функцию
Log()
method
public void Log(string $sMsg)
| ||
$sMsg | string | Сообщение для записи в лог |
Source Code: /engine/classes/Cron.class.php#74 (show)
public function Log($sMsg) {
if (Config::Get('sys.logs.cron')) {
$sMsg=$this->sProcessName.': '.$sMsg;
$this->oEngine->Logger_Notice($sMsg);
}
}
Делает запись в лог
Shutdown()
method
public void Shutdown()
|
Source Code: /engine/classes/Cron.class.php#127 (show)
public function Shutdown() {
$this->unsetLock();
$this->Log('Cron process ended');
}
Завершение крон-процесса
__call()
method
public mixed __call(string $sName, array $aArgs)
| ||
$sName | string | Имя метода |
$aArgs | array | Аргументы |
{return} | mixed |
Source Code: /engine/classes/Cron.class.php#152 (show)
public function __call($sName,$aArgs) {
return $this->oEngine->_CallModule($sName,$aArgs);
}
Ставим хук на вызов неизвестного метода и считаем что хотели вызвать метод какого либо модуля
See Also
__construct()
method
public void __construct(string|null $sLockFile=NULL)
| ||
$sLockFile | string|null | Полный путь до лок файла, например Config::Get('sys.cache.dir').'notify.lock' |
Source Code: /engine/classes/Cron.class.php#52 (show)
public function __construct($sLockFile=null) {
$this->sProcessName=get_class($this);
$this->oEngine=Engine::getInstance();
/**
* Инициализируем ядро
*/
$this->oEngine->Init();
if(!empty($sLockFile)) {
$this->oLockFile=fopen($sLockFile,'a');
}
/**
* Инициализируем лог и делает пометку о старте процесса
*/
$this->oEngine->Logger_SetFileName(Config::Get('sys.logs.cron_file'));
$this->Log('Cron process started');
}
__destruct()
method
public void __destruct()
|
Source Code: /engine/classes/Cron.class.php#134 (show)
public function __destruct() {
$this->Shutdown();
}
Вызывается при уничтожении объекта
isLock()
method
public bool isLock()
| ||
{return} | bool |
Source Code: /engine/classes/Cron.class.php#85 (show)
public function isLock() {
return ($this->oLockFile && !flock($this->oLockFile, LOCK_EX|LOCK_NB));
}
Проверяет уникальность создаваемого процесса
unsetLock()
method
public bool unsetLock()
| ||
{return} | bool |
Source Code: /engine/classes/Cron.class.php#93 (show)
public function unsetLock() {
return ($this->oLockFile && @flock($this->oLockFile, LOCK_UN));
}
Снимает блокировку на повторный процесс