Pustaka PHP untuk mengelola supervisor melalui XML-RPC API.
Melalui Komposer
composer require supervisor php/ supervisor
Pustaka ini bergantung pada pustaka fXmlRpc yang cepat dan kuat, yang mendukung sejumlah adaptor untuk menggunakan klien HTTP pilihan Anda untuk membuat koneksi.
Pada contoh di bawah, kita akan menggunakan perpustakaan klien HTTP Guzzle yang populer.
Contoh ini memerlukan beberapa perpustakaan tambahan agar dapat berfungsi. Untuk menyertakan komponen tambahan yang diperlukan, Anda dapat menjalankan:
composer require guzzlehttp/guzzle:^7.0
Contoh ini menunjukkan cara meneruskan kredensial autentikasi ke Guzzle, memulai klien fXmlRpc, dan meneruskannya ke 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 ();
Untuk setiap kemungkinan respons kesalahan, terdapat pengecualian. Pengecualian ini memperluas pengecualian umum, sehingga Anda dapat mengetahui kesalahan tertentu atau semuanya. Ketika kesalahan yang tidak diketahui dikembalikan dari server, sebuah contoh jika pengecualian umum dilempar. Daftar respons kesalahan dan pengecualian yang sesuai dapat ditemukan di kelas.
/** @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
}
Komponen Konfigurasi dan Acara telah dipindahkan ke repositori mereka sendiri.
Anda dapat menemukan dokumentasi supervisor XML-RPC di sini: http://supervisord.org/api.html
Jika Anda menggunakan ekstensi PHP XML-RPC untuk mengurai tanggapan (yang ditandai sebagai EKSPERIMENTAL ). Hal ini dapat menyebabkan masalah ketika Anda mencoba membaca/mengikuti log PROSES. Pastikan Anda membersihkan pesan log Anda. Satu-satunya informasi yang saya temukan tentang ini adalah komentar.
Silakan lihat KONTRIBUSI untuk rinciannya.
$ composer test
Tes fungsional (behat):
$ behat
Repositori ini dikirimkan dengan konfigurasi Docker Compose dan Dockerfile untuk memudahkan pengujian. Tes dapat dijalankan melalui:
docker-compose run --rm ci
Meskipun ini mencoba menjadi klien supervisor yang lengkap, ini bukanlah yang pertama. Namun beberapa penulis memutuskan untuk menghentikan paket mereka demi hal ini:
Lisensi MIT (MIT). Silakan lihat File Lisensi untuk informasi lebih lanjut.