Cara menggunakan PHP dan Swoole untuk melaksanakan panggilan jauh RPC
RPC (Panggilan Prosedur Jauh) ialah protokol panggilan jauh yang membolehkan aplikasi membuat panggilan fungsi pada komputer yang berbeza. RPC sering digunakan untuk membina sistem teragih, yang membolehkan perkhidmatan mikro yang berbeza berfungsi bersama.
Dalam dunia PHP dan Swoole, kami boleh menggunakan RPC dengan mudah untuk membuat panggilan jauh tanpa terlalu bergantung pada perpustakaan pihak ketiga yang lain. Artikel ini akan membawa anda melalui cara menggunakan PHP dan Swoole untuk melaksanakan panggilan jauh RPC.
Mula-mula, kita perlu memasang Swoole, enjin komunikasi rangkaian berprestasi tinggi yang menyokong PHP. Swoole boleh digunakan untuk membina aplikasi rangkaian, seperti pelayan web, RPC, SOA, dsb.
Anda boleh memasang Swoole melalui arahan berikut:
pecl install swoole
Tugas pertama kami ialah mencipta perkhidmatan RPC, Boleh bertindak balas terhadap permintaan pelanggan. Di sini kami menggunakan Swoole untuk mencipta pelayan yang boleh mendengar permintaan sambungan pelanggan dan memproses data yang dihantar oleh pelanggan.
Mula-mula, kami mencipta fail server.php, dan kemudian menggunakan kod berikut untuk mencipta pelayan Swoole:
<?php $server = new SwooleServer('0.0.0.0', 9501, SWOOLE_PROCESS, SWOOLE_SOCK_TCP);
Dalam kod ini, kami mencipta pelayan TCP yang boleh mendengar pada 0.0. 0.0:9501 alamat dan port.
Seterusnya, kita perlu mendengar permintaan sambungan pelanggan dan membuat sambungan untuk setiap pelanggan.
$server->on('Connect', function ($serv, $fd) { echo "Client {$fd} connected. "; });
Kod ini akan dipanggil apabila setiap pelanggan menyambung dan boleh digunakan untuk mengendalikan permintaan pelanggan yang baru disambungkan. Di sini, kami hanya mengeluarkan mesej.
Seterusnya, kita perlu mendengar data yang dihantar oleh pelanggan dan memproses permintaan mereka. Di sini, kami menggunakan format JSON untuk menghantar data.
$server->on('Receive', function ($serv, $fd, $from_id, $data) { $request = json_decode($data, true); if ($request['method'] == 'ping') { $response = array('success' => true, 'message' => 'pong'); } else { $response = array('success' => false, 'message' => 'invalid method'); } $serv->send($fd, json_encode($response)); });
Kod ini boleh menghuraikan permintaan dalam format JSON, dan kemudian menentukan sama ada kaedah permintaan adalah ping.
Akhir sekali, kita perlu memulakan pelayan dan mula mendengar permintaan pelanggan.
$server->start();
Kini, kami telah mencipta pelayan RPC yang boleh bertindak balas kepada permintaan pelanggan. Seterusnya, kita perlu menulis klien PHP mudah untuk menguji sama ada perkhidmatan RPC berfungsi dengan betul.
Di sini, kami menjalankan skrip klien dalam mod baris arahan dan menggunakan perpustakaan soket terbina dalam PHP untuk menghantar permintaan kepada pelayan.
Pertama, kita perlu mencipta fail client.php, dan kemudian gunakan kod berikut untuk menyambung ke pelayan dan menghantar permintaan.
<?php $client = stream_socket_client('tcp://127.0.0.1:9501', $errno, $errmsg, 3); $request = array('method' => 'ping'); fwrite($client, json_encode($request)); $response = stream_get_contents($client); echo $response . PHP_EOL;
Dalam kod ini, kami menggunakan fungsi stream_socket_client untuk menyambung ke pelayan dan menghantar permintaan ping ke pelayan. Kami kemudian membaca respons pelayan dan mengeluarkannya.
Kini kita boleh menjalankan skrip klien dan menyemak output konsol. Jika semuanya berjalan lancar, kita sepatutnya dapat melihat output seperti "{'success':true,'message':'pong'}".
Dalam artikel ini, kami telah mempelajari cara melaksanakan panggilan jauh RPC menggunakan PHP dan Swoole. Kami mencipta pelayan RPC ringkas yang boleh mengendalikan permintaan pelanggan, dan juga menulis klien PHP mudah untuk menguji sama ada perkhidmatan RPC berfungsi dengan betul.
Sudah tentu, ini hanyalah sebahagian kecil daripada sistem RPC yang lengkap Anda boleh merujuk kepada dokumentasi Swoole untuk mengetahui lebih lanjut tentang RPC.
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan panggilan jauh RPC menggunakan PHP dan Swoole. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!