PHP-библиотека для управления supervisor через XML-RPC API.
Через композитор
composer require supervisor php/ supervisor
Эта библиотека зависит от быстрой и мощной библиотеки fXmlRpc, которая поддерживает ряд адаптеров для использования предпочитаемого вами HTTP-клиента для установления соединений.
В приведенном ниже примере мы будем использовать популярную HTTP-клиентскую библиотеку Guzzle.
Для работы этого примера требуются некоторые дополнительные библиотеки. Чтобы включить необходимые дополнительные компоненты, вы можете запустить:
composer require guzzlehttp/guzzle:^7.0
В этом примере показано, как передать учетные данные аутентификации в Guzzle, запустить клиент fXmlRpc и передать их supervisor PHP.
// Create Guzzle HTTP client
$ guzzleClient = new GuzzleHttp Client ([
' auth ' => [ ' user ' , ' 123 ' ],
]);
// Pass the url and the guzzle client to the fXmlRpc Client
$ client = new fXmlRpc Client (
' http://127.0.0.1:9001/RPC2 ' ,
new fXmlRpc Transport PsrTransport (
new GuzzleHttp Psr7 HttpFactory (),
$ guzzleClient
)
);
// Or, if connecting via a Unix Domain Socket
$ guzzleClient = new GuzzleHttp Client ([
' curl ' => [
CURLOPT_UNIX_SOCKET_PATH => ' /var/run/ supervisor .sock ' ,
],
]);
$ client = new fXmlRpc Client (
' http://localhost/RPC2 ' ,
new fXmlRpc Transport PsrTransport (
new GuzzleHttp Psr7 HttpFactory (),
$ guzzleClient
)
);
// Pass the client to the supervisor library.
$ supervisor = new supervisor supervisor ( $ client );
// returns Process object
$ process = $ supervisor -> getProcess ( ' test_process ' );
// returns array of process info
$ supervisor -> getProcessInfo ( ' test_process ' );
// same as $ supervisor ->stopProcess($process);
$ supervisor -> stopProcess ( ' test_process ' );
// Don't wait for process start, return immediately
$ supervisor -> startProcess ( $ process , false );
// returns true if running
// same as $process->checkState(Process::RUNNING);
$ process -> isRunning ();
// returns process name
echo $ process ;
// returns process information
$ process -> getPayload ();
Для каждой возможной реакции на ошибку существует исключение. Эти исключения расширяют общее исключение, поэтому вы можете обнаружить конкретную ошибку или все. Когда с сервера возвращается неизвестная ошибка, выдается экземпляр общего исключения. Список реакций на ошибки и соответствующие исключения можно найти в классе.
/** @var supervisor supervisor $ supervisor */
try {
$ supervisor -> startProcess ( ' process ' , true );
} catch ( supervisor Exception Fault BadNameException $ e ) {
// handle bad name error here
} catch ( supervisor Exception supervisor Exception $ e ) {
// handle any other errors here
}
Компоненты конфигурации и событий были перенесены в отдельный репозиторий.
Вы можете найти документацию по XML-RPC supervisor здесь: http://supervisord.org/api.html.
Если вы используете расширение PHP XML-RPC для анализа ответов (которое помечено как ЭКСПЕРИМЕНТАЛЬНОЕ ). Это может вызвать проблемы при попытке прочитать/завершить журнал ПРОЦЕССА. Обязательно очистите сообщения журнала. Единственная информация, которую я нашел об этом, - это комментарий.
Пожалуйста, смотрите ВКЛАД для получения подробной информации.
$ composer test
Функциональные тесты (поведение):
$ behat
Этот репозиторий поставляется с конфигурацией Docker Compose и файлом Dockerfile для упрощения тестирования. Тесты можно запускать через:
docker-compose run --rm ci
Хотя это и попытка стать полноценным клиентом supervisor , это не первый клиент. Однако некоторые авторы решили отказаться от своих пакетов в пользу этого:
Лицензия MIT (MIT). Пожалуйста, смотрите файл лицензии для получения дополнительной информации.