Bibliothèque PHP pour gérer supervisor via l'API XML-RPC.
Via Compositeur
composer require supervisor php/ supervisor
Cette bibliothèque dépend de la bibliothèque fXmlRpc rapide et puissante, qui prend en charge un certain nombre d'adaptateurs pour utiliser votre client HTTP préféré pour établir des connexions.
Dans l'exemple ci-dessous, nous utiliserons la populaire bibliothèque client HTTP Guzzle.
Cet exemple nécessite quelques bibliothèques supplémentaires pour fonctionner. Pour inclure les composants supplémentaires nécessaires, vous pouvez exécuter :
composer require guzzlehttp/guzzle:^7.0
Cet exemple montre comment transmettre les informations d'authentification à Guzzle, lancer le client fXmlRpc et les transmettre au 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 ();
Il existe une exception pour chaque réponse possible aux erreurs. Ces exceptions étendent une exception commune, vous permettant ainsi de détecter une erreur spécifique ou la totalité. Lorsqu'une erreur inconnue est renvoyée par le serveur, une instance si l'exception commune est levée. La liste des réponses aux erreurs et l'exception appropriée se trouvent dans la classe.
/** @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
}
Les composants de configuration et d'événement ont été déplacés dans leur propre référentiel.
Vous pouvez trouver la documentation XML-RPC supervisor ici : http://supervisord.org/api.html
Si vous utilisez l'extension PHP XML-RPC pour analyser les réponses (qui est marquée comme EXPERIMENTAL ). Cela peut entraîner des problèmes lorsque vous essayez de lire/tenir le journal d'un PROCESSUS. Assurez-vous de nettoyer vos messages de journal. La seule information que j'ai trouvée à ce sujet est un commentaire.
Veuillez consulter CONTRIBUER pour plus de détails.
$ composer test
Tests fonctionnels (behat) :
$ behat
Ce référentiel est livré avec une configuration Docker Compose et un Dockerfile pour des tests faciles. Les tests peuvent être exécutés via :
docker-compose run --rm ci
Bien qu'il tente d'être un client supervisor complet, ce n'est pas le premier. Cependant certains auteurs ont décidé de déprécier leurs packages en faveur de ceci :
La licence MIT (MIT). Veuillez consulter le fichier de licence pour plus d'informations.