supervisord — Установка библиотеки PHP для Supervisor с использованием composer

Я хочу использовать Руководитель управлять своими процессами. Я установил его на мою машину 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

Я также пытался клонировать репо и включать файлы по отдельности, однако это показывает ошибку для других зависимостей. Было бы здорово, если бы я мог использовать это.

0

Решение

В приведенном выше коде есть 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
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]