Пакет WebPhpDemon предназначен для запуска постоянно работающего демона из браузера. Работает под Windows и *nix.
В пакет входит:
- FileLock - класс работы с файлом блокировки
- WebPhpDemon - класс работы с демоном
- WebPhpScript - класс работы со скриптами
- controller.php - демон (имя может быть измененно, задается в WebPhpDemon)
- config.php - конфигурационный файл загрузчиком
Кроме того, для работы пакета требуется класс для работы с логами
use Kymyzek\Logger\Logger;
Для работы демона создается система каталогов, установки задаются в файле config.php
В каталоге examples содержится файл index.php, который запускает демон и устанавливает параметры для запуска двух скриптов
// Подключаем конфигурационный файл
require_once 'config.php';
use Kymyzek\WebPhpDemon\WebPhpDemon;
use Kymyzek\WebPhpDemon\WebPhpScript;
// Установки первого скрипта
$interface = 'test_interface_1';
$wps = new WebPhpScript($interface);
$params = array(
'dir'=>D_ROOT,
'name'=>'test_1.php',
'wait'=>10,
);
$wps->params($params);
// Запускаем демон
$wpd = new WebPhpDemon();
$demon = array(
'dir' => D_ROOT,
);
$wpd->setParam($demon);
$wpd->run();
// Даже когда демон уже работает, можно подключать дополнительные скрипты
$interface = 'test_interface_2';
$wps = new WebPhpScript($interface);
$params['name'] = 'test_2.php';
$params['wait'] = 15;
$params['log'] = 'info';
$wps->params($params);
$wpd = new WebPhpDemon();
// можно установить параметры запуска демона, указанные ниже параметры устанавливаются по умолчанию
$set = array(
'name' => 'controller.php', //имя демона
'dir' => __DIR__, // рабочий каталог работы демона
'wait' => 1, // собственная задержка работы демона, активна при отсутствии задач, 1 сек
);
$wpd->setParam($set);
// запуск демона
$wpd->run();
// остановка демона
$wpd->stop();
// получение параметров демона
$params = $wpd->loadConfig();
// Необходимо установить уникальный интерфейс. Дубликат изменит параметры ранее установленного скрипта
$interface = 'test_interface_1';
$wps = new WebPhpScript($interface);
// Возможные параметры скрипта, все значения явяются не обязательными, в примере, стоят занчения по умолчанию
$set = array(
'interface' => '',//Основной идентификатор интерфейса
'dir' => '', //Корневая директория скрипта
'name' => '', //Имя скрипта
'wait' => 60, //Ожидание до следующего запуска в секундах
'log' => 'error', //если info - будет выводится лог запуска, иначе только ошибки
);
$wps->params($set);
// Чтение установленных параметров
$wps->loadParams();
// Чтение статуса скрипта, возваращает массив
$states = $wps->loadStates();
// Изменение статуса скрипта, можно передавать массив параметров или строку для статуса
$wps->setStatus('wait');