ไลบรารี PHP สำหรับการจัดการ supervisor ผ่าน XML-RPC API
ผ่านทางผู้แต่ง
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
}
ส่วนประกอบการกำหนดค่าและเหตุการณ์ได้ถูกย้ายไปยังที่เก็บของตนเองแล้ว
คุณสามารถค้นหาเอกสาร XML-RPC supervisor ได้ที่นี่: http://supervisord.org/api.html
หากคุณใช้ส่วนขยาย PHP XML-RPC เพื่อแยกวิเคราะห์การตอบสนอง (ซึ่งทำเครื่องหมายเป็น EXPERIMENTAL ) ซึ่งอาจทำให้เกิดปัญหาเมื่อคุณพยายามอ่าน/ท้ายบันทึกของกระบวนการ ตรวจสอบให้แน่ใจว่าคุณล้างข้อความบันทึกของคุณ ข้อมูลเดียวที่ฉันพบเกี่ยวกับสิ่งนี้คือความคิดเห็น
โปรดดูการมีส่วนร่วมเพื่อดูรายละเอียด
$ composer test
การทดสอบการทำงาน (ตาม):
$ behat
พื้นที่เก็บข้อมูลนี้มาพร้อมกับการกำหนดค่า Docker Compose และ Dockerfile เพื่อการทดสอบที่ง่ายดาย การทดสอบสามารถทำได้ผ่าน:
docker-compose run --rm ci
แม้ว่าสิ่งนี้จะพยายามเป็นลูกค้า supervisor โดยสมบูรณ์ แต่นี่ไม่ใช่รายแรก อย่างไรก็ตาม ผู้เขียนบางคนตัดสินใจเลิกใช้แพ็คเกจของตนเพื่อสนับสนุนสิ่งนี้:
ใบอนุญาตเอ็มไอที (MIT) โปรดดูไฟล์ใบอนุญาตสำหรับข้อมูลเพิ่มเติม