Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara mengendalikan baris gilir mesej WebSocket dan AMQP dalam pembangunan API backend PHP

Cara mengendalikan baris gilir mesej WebSocket dan AMQP dalam pembangunan API backend PHP

WBOY
WBOYasal
2023-06-17 16:55:361155semak imbas

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:

  1. Tetapkan sambungan WebSocket dan tetapkan parameter yang berkaitan, seperti masa sambungan dan mesej berterusan format.
  2. Dengar acara mesej WebSocket dan tunggu klien menghantar mesej.
  3. Balas mesej pelanggan dan lakukan pemprosesan perniagaan.
  4. Tolak mesej kepada pelanggan mengikut keperluan.

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:

  1. Buat sambungan AMQP dan tetapkan parameter sambungan, seperti alamat, akaun , dan kata laluan.
  2. Isytihar baris gilir atau pertukaran AMQP.
  3. Terbitkan atau gunakan mesej AMQP.
  4. Proses mesej dan lakukan operasi seterusnya, seperti menjana mesej baharu atau mengemas kini data.

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn