avnovoselov / small
Some Small Helpers
Requires
- php: >=7
- ext-mbstring: *
Requires (Dev)
README
Some Small Helpers
Installation
composer require avnovoselov/small
API
- Arguments - класс для работы с аргументами скрипта
- Daemon - абстрактный класс демона
- DaemonInterface - интерфейс демона
- Path - работа с путями
- Script - абстрактный класс скрипта
- Terminal - класс для работы с выводом в терминал
Устаревшее ↓
- Daemon
- InterfaceDaemon::process() - тело демона
- InterfaceDaemon::skip() - условия пропуска итерации
- InterfaceDaemon::environment() - настройки окружения
- AbstractDaemon::arguments() - настройки аргументов
- AbstractDaemon::$arguments - список аргументов
- AbstractDaemon::run() - запуск демона
- AbstractDaemon::__construct() - конструктор
- Arguments
Daemon
InterfaceDaemon и AbstractDaemon
Для создания нового демона следует расширить абстрактный класс 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
- задержка между итерациями (в секундах)