PHP dan RabbitMQ: Bagaimana untuk membina sistem komunikasi masa nyata berskala

PHPz
Lepaskan: 2023-07-17 12:54:01
asal
1245 orang telah melayarinya

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.

  1. 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
    Salin selepas log masuk
  2. Menggunakan RabbitMQ dalam PHP
    PHP menyediakan sambungan untuk berinteraksi dengan RabbitMQ, yang boleh dipasang melalui Komposer:

    composer require php-amqplib/php-amqplib
    Salin selepas log masuk

Contoh: Hantar mesej

Contoh: Hantar mesej

mesej

<?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();
?>
Salin selepas log masuk
  1. Membina sistem komunikasi masa nyata berskala
    Dengan RabbitMQ, kami boleh membina sistem komunikasi masa nyata berskala. Berikut ialah contoh mudah yang menunjukkan cara menggunakan PHP dan RabbitMQ untuk melaksanakan fungsi penyiaran mesej sistem sembang masa nyata.

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();
?>
Salin selepas log masuk

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();
?>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan