مكتبة 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 لتحليل الاستجابات (والتي تم وضع علامة تجريبية عليها). قد يتسبب هذا في حدوث مشكلات عندما تحاول قراءة/سجل العملية. تأكد من تنظيف رسائل السجل الخاصة بك. المعلومات الوحيدة التي وجدتها حول هذا الأمر هي تعليق.
يرجى الاطلاع على المساهمة للحصول على التفاصيل.
$ composer test
الاختبارات الوظيفية (بهات):
$ behat
يأتي هذا المستودع مزودًا بتكوين Docker Compose وملف Dockerfile لسهولة الاختبار. يمكن إجراء الاختبارات عبر:
docker-compose run --rm ci
بينما يحاول هذا أن يكون عميلًا supervisor كاملاً، إلا أن هذا ليس الأول. لكن بعض المؤلفين قرروا إيقاف حزمهم لصالح هذا:
رخصة معهد ماساتشوستس للتكنولوجيا (MIT). يرجى الاطلاع على ملف الترخيص لمزيد من المعلومات.