Rumah >pembangunan bahagian belakang >tutorial php >Cara mengendalikan baris gilir mesej WebSocket dan AMQP dalam pembangunan API backend PHP
Dengan populariti Internet dan peranti mudah alih, aplikasi web moden bukan lagi hanya halaman statik yang memaparkan kandungan, tetapi aplikasi dinamik yang lebih kompleks dan interaktif. Perubahan ini memerlukan pelaksanaan teknikal API bahagian belakang juga perlu dinaik taraf untuk memenuhi keperluan pengguna dan dapat bertindak balas dengan cepat. Antaranya, pemprosesan baris gilir mesej WebSocket dan AMQP telah menjadi dua cara teknikal yang sangat kritikal dan biasa dalam pembangunan API bahagian belakang.
WebSocket ialah protokol komunikasi dupleks penuh yang boleh membantu mencapai komunikasi masa nyata dan menolak, membolehkan aplikasi web mencapai interaksi data yang lebih cekap dan pengalaman pengguna yang lebih baik. Tidak seperti model respons permintaan HTTP tradisional, WebSocket membenarkan mesej berterusan dihantar dan diterima melalui sambungan terbuka. Mekanisme sambungan yang panjang ini mengekalkan komunikasi yang stabil dengan pelayan sambil mengelakkan sambungan dan pemutusan sambungan yang kerap.
Dalam API bahagian belakang yang mengendalikan WebSocket, kami biasanya perlu melaksanakan langkah berikut:
Untuk pelaksanaan WebSocket, kita boleh menggunakan perpustakaan WebSocket PHP, seperti Ratchet dan PHP-Websockets. Perpustakaan ini menyediakan API dan acara yang mudah dan mudah digunakan untuk membantu kami membina pelayan WebSocket dengan cepat, sambil turut menyokong pertukaran data dan komunikasi antara aplikasi. Kami hanya perlu menulis skrip PHP untuk melengkapkan interaksi dengan pelanggan. Untuk pelaksanaan khusus, sila rujuk kod contoh berikut:
require 'vendor/autoload.php'; use RatchetMessageComponentInterface; use RatchetConnectionInterface; class WebSocketServer implements MessageComponentInterface { protected $clients; public function __construct() { $this->clients = new SplObjectStorage; } public function onOpen(ConnectionInterface $conn) { $this->clients->attach($conn); echo "New client connected {$conn->resourceId} "; } public function onMessage(ConnectionInterface $from, $msg) { foreach ($this->clients as $client) { if ($from === $client) { continue; } $client->send($msg); } } public function onClose(ConnectionInterface $conn) { $this->clients->detach($conn); echo "Client {$conn->resourceId} disconnected "; } public function onError(ConnectionInterface $conn, Exception $e) { echo "WebSocket Error: {$e->getMessage()} "; $conn->close(); } } $loop = ReactEventLoopFactory::create(); $webSocketServer = new RatchetServerIoServer( new RatchetHttpHttpServer( new RatchetWebSocketWsServer( new WebSocketServer() ) ), $loop ); echo "WebSocket server started "; $webSocketServer->run();
Selain WebSocket, baris gilir mesej AMQP (Advanced Message Qeuing Protocol) juga merupakan bahagian penting API back-end PHP. Baris gilir mesej ialah corak pemesejan tak segerak yang boleh digunakan untuk memisahkan dan memproses pelbagai jenis perkhidmatan secara serentak. Dalam aplikasi web, baris gilir mesej boleh digunakan untuk mengendalikan beban kerja yang berat seperti sejumlah besar operasi interaktif, tugas beban tinggi dan pemprosesan data. Dalam cara tidak segerak, baris gilir mesej boleh mengoptimumkan prestasi dan kelajuan tindak balas aplikasi web dan mengelakkan menunggu lama dan menyekat.
Dalam API bahagian belakang yang mengendalikan baris gilir mesej AMQP, biasanya kami perlu melengkapkan langkah berikut:
Pelaksanaan AMQP biasa dalam PHP termasuk perpustakaan seperti php-amqplib dan pecl-amqp. Melalui perpustakaan ini, kami boleh menggunakan baris gilir mesej AMQP dengan mudah dalam PHP dan menerbitkan serta menggunakan mesej dengan cepat. Berikut ialah kod contoh AMQP yang dilaksanakan menggunakan php-amqplib:
require_once __DIR__ . '/vendor/autoload.php'; use PhpAmqpLibConnectionAMQPStreamConnection; use PhpAmqpLibMessageAMQPMessage; $connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest'); $channel = $connection->channel(); $channel->queue_declare('hello', false, false, false, false); $callback = function ($msg) { echo 'Received: ', $msg->body, PHP_EOL; }; $channel->basic_consume('hello', '', false, true, false, false, $callback); echo "Waiting for messages. To exit press CTRL+C "; while (count($channel->callbacks)) { $channel->wait(); }
Melalui kod contoh di atas, kami boleh memproses baris gilir mesej WebSocket dan AMQP dengan mudah, serta meningkatkan prestasi dan kelajuan tindak balas aplikasi web.
Atas ialah kandungan terperinci Cara mengendalikan baris gilir mesej WebSocket dan AMQP dalam pembangunan API backend PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!