PHP dan RabbitMQ: Bagaimana untuk membina sistem komunikasi masa nyata berskala
Pengenalan
Dalam era Internet hari ini, komunikasi masa nyata telah menjadi keperluan teras untuk banyak aplikasi. Apabila membina sistem komunikasi masa nyata berskala, memilih perkhidmatan baris gilir mesej yang betul adalah penting. RabbitMQ, sebagai broker mesej yang boleh dipercayai, digunakan secara meluas untuk membina sistem komunikasi masa nyata. Artikel ini akan memperkenalkan cara menggunakan PHP dan RabbitMQ untuk membina sistem komunikasi masa nyata berskala dan menggunakan contoh kod untuk membantu pembaca memahami secara mendalam.
Gambaran Keseluruhan RabbitMQ
RabbitMQ ialah broker mesej sumber terbuka, dilaksanakan berdasarkan protokol AMQP (Advanced Message Qeuing Protocol). Ia memisahkan pengeluar mesej dan pengguna serta melaksanakan komunikasi tak segerak melalui baris gilir mesej. Kebolehpercayaan, fleksibiliti dan skalabiliti yang tinggi RabbitMQ menjadikannya pilihan yang ideal untuk membina sistem komunikasi masa nyata.
Pertama, kita perlu memasang pelayan RabbitMQ. RabbitMQ boleh dipasang melalui arahan berikut:
sudo apt-get install rabbitmq-server
Menggunakan RabbitMQ dalam PHP
PHP menyediakan sambungan untuk berinteraksi dengan RabbitMQ, yang boleh dipasang melalui Komposer:
composer require php-amqplib/php-amqplib
Contoh: Hantar mesej
Contoh: Hantar mesejmesej
<?php 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); // 创建消息 $message = new AMQPMessage('Hello World!'); // 发送消息 $channel->basic_publish($message, '', 'hello'); echo " [x] Sent 'Hello World!' "; // 关闭连接 $channel->close(); $connection->close(); ?>
Pertama, kita perlu mencipta pengeluar mesej untuk menerima mesej daripada pengguna dan menghantarnya ke baris gilir mesej:
<?php require_once __DIR__ . '/vendor/autoload.php'; use PhpAmqpLibConnectionAMQPStreamConnection; // 创建连接 $connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest'); $channel = $connection->channel(); // 声明队列 $channel->queue_declare('hello', false, false, false, false); echo " [*] Waiting for messages. To exit press CTRL+C "; // 定义回调函数来处理接收到的消息 $callback = function ($msg) { echo ' [x] Received ', $msg->body, " "; }; // 监听队列 $channel->basic_consume('hello', '', false, true, false, false, $callback); // 循环等待消息 while ($channel->is_consuming()) { $channel->wait(); } // 关闭连接 $channel->close(); $connection->close(); ?>
Kemudian, kita boleh mencipta berbilang pengguna mesej untuk menerima mesej daripada baris gilir mesej Terima mesej dan siarkan kepada semua pengguna dalam talian:
<?php require_once __DIR__ . '/vendor/autoload.php'; use PhpAmqpLibConnectionAMQPStreamConnection; use PhpAmqpLibMessageAMQPMessage; // 创建连接 $connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest'); $channel = $connection->channel(); // 声明交换机 $channel->exchange_declare('chat_exchange', 'fanout', false, false, false); while (true) { // 从标准输入读取用户输入的消息 $message = readline(); // 创建消息 $amqpMessage = new AMQPMessage($message); // 发布消息到交换机 $channel->basic_publish($amqpMessage, 'chat_exchange'); echo " [x] Sent '$message' "; } // 关闭连接 $channel->close(); $connection->close(); ?>
Ringkasan
Dengan PHP dan RabbitMQ, kami boleh membina sistem komunikasi masa nyata berskala. Artikel ini memperkenalkan konsep asas dan kaedah pemasangan RabbitMQ, dan memberikan contoh kod untuk menggunakan PHP dan RabbitMQ untuk menghantar dan menerima mesej. Akhirnya, melalui kes sistem sembang masa nyata, ia ditunjukkan cara menggunakan RabbitMQ untuk melaksanakan fungsi penyiaran mesej. Saya harap artikel ini akan membantu pembaca dalam memahami dan menggunakan PHP dan RabbitMQ untuk membina sistem komunikasi masa nyata berskala.
Atas ialah kandungan terperinci PHP dan RabbitMQ: Bagaimana untuk membina sistem komunikasi masa nyata berskala. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!