PHP-Bibliothek zur Verwaltung supervisor über die XML-RPC-API.
Über Komponist
composer require supervisor php/ supervisor
Diese Bibliothek basiert auf der schnellen und leistungsstarken fXmlRpc-Bibliothek, die eine Reihe von Adaptern unterstützt, um Ihren bevorzugten HTTP-Client zum Herstellen von Verbindungen zu verwenden.
Im folgenden Beispiel verwenden wir die beliebte HTTP-Clientbibliothek Guzzle.
Für dieses Beispiel sind einige zusätzliche Bibliotheken erforderlich. Um die erforderlichen zusätzlichen Komponenten einzubinden, können Sie Folgendes ausführen:
composer require guzzlehttp/guzzle:^7.0
Dieses Beispiel zeigt, wie man Authentifizierungsdaten an Guzzle weitergibt, den fXmlRpc-Client initiiert und diese an supervisor PHP weitergibt.
// 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 ();
Für jede mögliche Fehlerreaktion gibt es eine Ausnahme. Diese Ausnahmen erweitern eine allgemeine Ausnahme, sodass Sie einen bestimmten Fehler oder alle abfangen können. Wenn vom Server ein unbekannter Fehler zurückgegeben wird, wird eine Instanz der allgemeinen Ausnahme ausgelöst. Die Liste der Fehlerreaktionen und der entsprechenden Ausnahme finden Sie in der Klasse.
/** @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
}
Konfigurations- und Ereigniskomponenten wurden in ein eigenes Repository verschoben.
Die supervisor -XML-RPC-Dokumentation finden Sie hier: http://supervisord.org/api.html
Wenn Sie die PHP-XML-RPC-Erweiterung zum Parsen von Antworten verwenden (die als EXPERIMENTAL gekennzeichnet ist). Dies kann zu Problemen führen, wenn Sie versuchen, das Protokoll eines PROZESSES zu lesen bzw. zu schließen. Stellen Sie sicher, dass Sie Ihre Protokollnachrichten bereinigen. Die einzige Information, die ich dazu gefunden habe, ist ein Kommentar.
Weitere Informationen finden Sie unter BEITRAGEN.
$ composer test
Funktionstests (behat):
$ behat
Dieses Repository wird mit einer Docker Compose-Konfiguration und einer Docker-Datei zum einfachen Testen geliefert. Tests können durchgeführt werden über:
docker-compose run --rm ci
Obwohl dies ein vollständiger supervisor Client sein soll, ist dies nicht der erste. Einige Autoren haben jedoch beschlossen, ihre Pakete zu diesem Zweck abzulehnen:
Die MIT-Lizenz (MIT). Weitere Informationen finden Sie in der Lizenzdatei.