Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Analisis protokol QoS dan amalan penghantaran MQTT yang boleh dipercayai dalam pembangunan PHP

Analisis protokol QoS dan amalan penghantaran MQTT yang boleh dipercayai dalam pembangunan PHP

WBOY
WBOYasal
2023-07-09 13:45:101387semak imbas

Analisis protokol QoS dan amalan penghantaran MQTT yang boleh dipercayai dalam pembangunan PHP

Pengenalan:
MQTT (Message Queuing Telemetry Transport) ialah protokol penghantaran mesej ringan yang sesuai untuk pelbagai persekitaran dan peranti rangkaian. Ia mudah, boleh dipercayai, dan cekap, dan digunakan secara meluas dalam Internet Perkara dan sistem pengedaran berskala besar. Artikel ini akan membincangkan cara menggunakan MQTT untuk melaksanakan protokol QoS (Kualiti Perkhidmatan) dan mencapai penghantaran yang boleh dipercayai dalam pembangunan PHP.

1. Gambaran keseluruhan protokol MQTT dan QoS
MQTT direka untuk menyediakan penghantaran mesej yang boleh dipercayai dalam persekitaran rangkaian jalur lebar rendah, kependaman tinggi dan tidak boleh dipercayai. Ia menyokong tiga tahap protokol QoS: QoS0, QoS1 dan QoS2.

  1. QoS0: Paling banyak satu penghantaran, mesej mungkin hilang, kebolehpercayaan tidak dijamin.
  2. QoS1: Sekurang-kurangnya sekali penghantaran, mesej akan dihantar ke hujung penerima, tetapi ia mungkin dihantar berulang kali.
  3. QoS2: Hanya terdapat satu penghantaran, dan mesej akan dihantar dengan tepat ke penerima untuk memastikan kebolehpercayaan.

Dalam aplikasi praktikal, memilih tahap QoS yang sesuai bergantung pada kepentingan dan keperluan kebolehpercayaan mesej.

2. Pelaksanaan protokol QoS MQTT dalam PHP
Dalam PHP, anda boleh menggunakan perpustakaan klien phpmqtt untuk melaksanakan penggunaan protokol MQTT. Berikut ialah contoh kod QoS1 berdasarkan phpmqtt:

<?php
require('phpMQTT.php');

$server = 'localhost';  // MQTT服务器地址
$port = 1883;  // MQTT服务器端口号
$username = '';  // 用户名(可选)
$password = '';  // 密码(可选)
$client_id = 'client_id';  // 客户端标识符(唯一)

$mqtt = new phpMQTT($server, $port, $client_id);

if(!$mqtt->connect(true, NULL, $username, $password)){
    exit(1);
}

$topic = 'topic';
$message = 'Hello MQTT!';
$qos = 1;

$mqtt->publish($topic, $message, $qos);

$mqtt->close();
?>

Kod di atas melaksanakan penerbitan mesej ke topik yang ditentukan dan menetapkan tahap QoS kepada 1. Dalam contoh ini, jika masalah rangkaian berlaku semasa menghantar mesej, MQTT akan mencuba semula secara automatik sehingga mesej berjaya dihantar.

3 Amalan penghantaran yang boleh dipercayai dalam PHP
Untuk mencapai penghantaran mesej yang boleh dipercayai, selalunya perlu untuk menggabungkan protokol QoS dan keperluan perniagaan sebenar. Berikut ialah contoh PHP berdasarkan MQTT dan Redis, menunjukkan kaedah untuk mencapai penghantaran yang boleh dipercayai.

<?php
require('phpMQTT.php');
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

function publishMessage($topic, $message) {
    global $redis;
    $messageId = uniqid();
    $redis->hset('mqtt_ack', $messageId, 0);
    $mqtt = new phpMQTT('localhost', 1883, 'client_id_' . $messageId);
    if ($mqtt->connect(true, NULL, '', '')) {
        $mqtt->publish($topic, $message, 1);
        $mqtt->close();
    }
    return $messageId;
}

function checkMessageId($messageId) {
    global $redis;
    $ack = $redis->hget('mqtt_ack', $messageId);
    if ($ack == 1) {
        $redis->hdel('mqtt_ack', $messageId);
        return true;
    }
    return false;
}

// 发布消息
$topic = 'topic';
$message = 'Hello MQTT!';
$messageId = publishMessage($topic, $message);

// 检查消息是否发送成功
while (!checkMessageId($messageId)) {
    sleep(1);
    // 如果消息发送失败,重新发布
    $messageId = publishMessage($topic, $message);
}

echo 'Message sent successfully!';
?>

Kod di atas menggunakan Redis untuk menyimpan status setiap mesej Apabila mesej berjaya dihantar, status ditetapkan kepada 1. Penghantaran yang boleh dipercayai dicapai dengan menyemak status mesej secara kitaran.

Kesimpulan:
Artikel ini memperkenalkan analisis protokol QoS dan amalan penghantaran MQTT yang boleh dipercayai dalam pembangunan PHP. Dengan memilih tahap QoS secara rasional dan menggabungkan keperluan perniagaan sebenar, penghantaran mesej yang stabil dan boleh dipercayai boleh dicapai. Pada masa yang sama, semakan status berdasarkan alat seperti Redis dapat memastikan kebolehpercayaan mesej dengan lebih baik.

Pautan rujukan:

  1. [pustaka phpmqtt](https://github.com/soul-leq/phpMQTT)
  2. [Spesifikasi protokol rasmi MQTT](http://mqtt.org/documentation)

Atas ialah kandungan terperinci Analisis protokol QoS dan amalan penghantaran MQTT yang boleh dipercayai dalam pembangunan 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