Some Small Helpers
composer require avnovoselov/small
- Arguments - класс для работы с аргументами скрипта
- Daemon - абстрактный класс демона
- DaemonInterface - интерфейс демона
- Path - работа с путями
- Script - абстрактный класс скрипта
- Terminal - класс для работы с выводом в терминал
Устаревшее ↓
- Daemon
- InterfaceDaemon::process() - тело демона
- InterfaceDaemon::skip() - условия пропуска итерации
- InterfaceDaemon::environment() - настройки окружения
- AbstractDaemon::arguments() - настройки аргументов
- AbstractDaemon::$arguments - список аргументов
- AbstractDaemon::run() - запуск демона
- AbstractDaemon::__construct() - конструктор
- Arguments
Для создания нового демона следует расширить абстрактный класс AbstractDaemon
и реализовать интерфейс InterfaceDaemon
.
InterfaceDaemon::process()
- метод, выполняемый в каждой итерации (тело демона)
Counter.php
class Counter extends \Small\AbstractDaemon
{
private $count = 0;
public function process()
{
++$this->count;
echo PHP_EOL . " iteration run at: {$this->lastRunDate}";
echo PHP_EOL . " iteration number: {$this->count}";
}
}
если необходимо добавить условия выполнения итерации, следует реализовать метод
InterfaceDaemon::skip
InterfaceDaemon::skip(): bool
- метод, проверяющий удовлетворены ли условия для выполнения итерации.
Например подключение к БД.
class Counter extends \Small\AbstractDaemon
{
...
public function skip(): bool
{
return time() % 2;
}
}
В примере выше метод Counter::skip
пропускает итерации, запущенные в нечетные секунды
InterfaceDaemon::environment(): InterfaceDaemon
- метод, определяющий настройки окружения
(Настройки подключения в БД, отображение ошибок и т.д.).
class Counter extends \Small\AbstractDaemon
{
...
public function environment(): \Small\InterfaceDaemon
{
ini_set('display_errors', 0);
ini_set('display_startup_errors', 0);
error_reporting(0);
return $this;
}
}
AbstractDaemon::arguments(array $defaultArguments = []): \Small\InterfaceDaemon
- метод,
определяющий аргументы вызова демона и устанавливающий значения по умолчанию.
daemon/counter.php
$counterDaemon = new Counter('Counter');
$counterDaemon
->arguments(['count' => 0])
->run();
/> php daemon/counter.php --count=3
Для демона $counterDaemon
доступен аргумент --count
, со значения которого начнется счет
в примере выше, аргумент --count
имеет значение по умолчанию 0
.
AbstractDaemon::$arguments
- экземпляр класса \Small\Arguments
,
обеспечивающий доступ к аргументам запуска демона.
class Counter extends \Small\AbstractDaemon
{
public function environment(): \Small\InterfaceDaemon
{
$this->count = $this->arguments->get('count');
ini_set('display_errors', 0);
ini_set('display_startup_errors', 0);
error_reporting(0);
return $this;
}
}
AbstractDaemon::run(): void
- запуск демона
AbstractDaemon::__construct(string $name, int $sleep = 1): AbstractDaemon
- конструктор демона
$name
- имя демона$sleep
- задержка между итерациями (в секундах)