Biblioteca PHP para gerenciamento supervisor através da API XML-RPC.
Através do Compositor
composer require supervisor php/ supervisor
Esta biblioteca depende da rápida e poderosa biblioteca fXmlRpc, que suporta vários adaptadores para usar seu cliente HTTP preferido para fazer conexões.
No exemplo abaixo, usaremos a popular biblioteca cliente Guzzle HTTP.
Este exemplo requer algumas bibliotecas adicionais para funcionar. Para incluir os componentes extras necessários, você pode executar:
composer require guzzlehttp/guzzle:^7.0
Este exemplo mostra como passar credenciais de autenticação para o Guzzle, iniciar o cliente fXmlRpc e passá-lo para 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 resposta de falha possível há uma exceção. Essas exceções estendem uma exceção comum, para que você possa detectar uma falha específica ou todas. Quando uma falha desconhecida é retornada do servidor, uma instância da exceção comum é lançada. A lista de respostas de falha e a exceção apropriada podem ser encontradas na 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
}
Os componentes de configuração e evento foram movidos para seu próprio repositório.
Você pode encontrar a documentação supervisor XML-RPC aqui: http://supervisord.org/api.html
Se você usar a extensão PHP XML-RPC para analisar as respostas (que está marcada como EXPERIMENTAL ). Isso pode causar problemas quando você está tentando ler/finalizar o log de um PROCESS. Certifique-se de limpar suas mensagens de log. A única informação que encontrei sobre isso é um comentário.
Consulte CONTRIBUINDO para obter detalhes.
$ composer test
Testes funcionais (behat):
$ behat
Este repositório vem com uma configuração Docker Compose e um Dockerfile para facilitar o teste. Os testes podem ser executados através de:
docker-compose run --rm ci
Embora este tente ser um cliente supervisor completo, este não é o primeiro. No entanto, alguns autores decidiram descontinuar seus pacotes em favor disso:
A licença MIT (MIT). Consulte Arquivo de licença para obter mais informações.