Я хочу использовать Руководитель управлять своими процессами. Я установил его на мою машину Amazon linux, и базовая настройка работает нормально в соответствии с файлом конфигурации.
Теперь я хочу динамически менять процессы. Так как для этого нужно каждый раз изменять конфигурационный файл и перезапускать, использование библиотеки PHP для этого тоже представляется хорошим вариантом.
Конкретно я прохожу Конфигурация SupervisorPHP динамически изменять конфигурацию и SupervisorPHP руководителю Supervisor через PHP.
После README для Конфигурация SupervisorPHP, Я установил его через композитор
composer require supervisorphp/configuration
Я скопировал пример кода
<?php
use Supervisor\Configuration\Configuration;
use Supervisor\Configuration\Section\Supervisord;
use Supervisor\Configuration\Section\Program;
use Indigophp\Ini\Rendere;
$config = new Configuration;
$renderer = new Renderer;
$section = new Supervisord(['identifier' => 'supervisor']);
$config->addSection($section);
$section = new Program('test', ['command' => 'cat']);
$config->addSection($section);
echo $renderer->render($config->toArray());
Когда я запускаю этот код, я получаю следующую ошибку:
PHP Fatal error: Class 'Supervisor\Configuration\Configuration' not found in test.php on line 7
Я также пытался клонировать репо и включать файлы по отдельности, однако это показывает ошибку для других зависимостей. Было бы здорово, если бы я мог использовать это.
В приведенном выше коде есть 2 ошибки.
Первая ошибка заключается в том, что вы не используете автозагрузчик, предоставляемый composer, чтобы php мог найти необходимые классы. Для этого просто добавьте require __DIR__ . '/vendor/autoload.php';
(Если папка вендора находится по другому пути относительно образца сценария, измените его соответствующим образом).
Вторая ошибка в утверждении использования для Indigophp. Помимо очевидной опечатки в слове Renderer, если вы проверите источник Indigo, вы увидите, что он должен быть use Indigo\Ini\Renderer;
Итак, правильный код для проверки вашей установки:
<?php
require __DIR__ . '/vendor/autoload.php';
use Supervisor\Configuration\Configuration;
use Supervisor\Configuration\Section\Supervisord;
use Supervisor\Configuration\Section\Program;
use Indigo\Ini\Renderer;
$config = new Configuration;
$renderer = new Renderer;
$section = new Supervisord(['identifier' => 'supervisor']);
$config->addSection($section);
$section = new Program('test', ['command' => 'cat']);
$config->addSection($section);
echo $renderer->render($config->toArray());
Запустив приведенный выше код, вы должны получить следующий вывод:
[supervisord]
identifier = supervisor
[program:test]
command = cat
Других решений пока нет …