Biblioteca PHP para la gestión supervisor a través de API XML-RPC.
Vía compositor
composer require supervisor php/ supervisor
Esta biblioteca depende de la rápida y potente biblioteca fXmlRpc, que admite varios adaptadores para utilizar su cliente HTTP preferido para realizar conexiones.
En el siguiente ejemplo, utilizaremos la popular biblioteca cliente HTTP Guzzle.
Este ejemplo requiere algunas bibliotecas adicionales para funcionar. Para incluir los componentes adicionales necesarios, puede ejecutar:
composer require guzzlehttp/guzzle:^7.0
Este ejemplo muestra cómo pasar credenciales de autenticación a Guzzle, iniciar el cliente fXmlRpc y pasarlo al 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 ();
Para cada posible respuesta a un fallo hay una excepción. Estas excepciones amplían una excepción común, por lo que puede detectar una falla específica o todas. Cuando el servidor devuelve una falla desconocida, se genera una instancia si se genera la excepción común. La lista de respuestas a fallos y la excepción apropiada se pueden encontrar en la clase.
/** @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
}
Los componentes de configuración y eventos se han movido a su propio repositorio.
Puede encontrar la documentación XML-RPC supervisor aquí: http://supervisord.org/api.html
Si utiliza la extensión PHP XML-RPC para analizar respuestas (que está marcada como EXPERIMENTAL ). Esto puede causar problemas al intentar leer o finalizar el registro de un PROCESO. Asegúrese de limpiar sus mensajes de registro. La única información que encontré sobre esto es un comentario.
Consulte CONTRIBUCIÓN para obtener más detalles.
$ composer test
Pruebas funcionales (behat):
$ behat
Este repositorio se envía con una configuración de Docker Compose y un Dockerfile para facilitar las pruebas. Las pruebas se pueden ejecutar a través de:
docker-compose run --rm ci
Si bien este intenta ser un cliente supervisor completo, este no es el primero. Sin embargo, algunos autores decidieron desaprobar sus paquetes a favor de esto:
La Licencia MIT (MIT). Consulte el archivo de licencia para obtener más información.