supervisor
Version 5.0
用於透過 XML-RPC API 管理supervisor的 PHP 函式庫。
透過作曲家
composer require supervisor php/ supervisor
該庫依賴快速且強大的 fXmlRpc 庫,該庫支援許多適配器以使用您首選的 HTTP 用戶端進行連接。
在下面的範例中,我們將使用流行的 Guzzle HTTP 用戶端程式庫。
此範例需要一些額外的庫才能運行。要包含必要的額外組件,您可以運行:
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
}
配置和事件元件已移至其自己的儲存庫中。
您可以在此處找到supervisor XML-RPC 文件:http://supervisord.org/api.html
如果您使用 PHP XML-RPC 擴充功能來解析回應(標記為EXPERIMENTAL )。當您嘗試讀取進程的尾部日誌時,這可能會導致問題。確保清理日誌訊息。我找到的關於此的唯一資訊是評論。
詳細資訊請參閱貢獻。
$ composer test
功能測試(行為):
$ behat
該存儲庫附帶了 Docker Compose 配置和 Dockerfile,以便於測試。測試可以透過以下方式運行:
docker-compose run --rm ci
雖然這試圖成為一個完整的supervisor客戶端,但這並不是第一個。然而,一些作者決定棄用他們的軟體包,轉而採用以下方式:
麻省理工學院許可證 (MIT)。請參閱許可證文件以獲取更多資訊。