Rumah >pembangunan bahagian belakang >tutorial php >Langganan mesej MQTT dan amalan penerbitan dalam pembangunan PHP

Langganan mesej MQTT dan amalan penerbitan dalam pembangunan PHP

WBOY
WBOYasal
2023-07-08 14:02:512385semak imbas

Langganan dan penerbitan mesej praktikal MQTT dalam pembangunan PHP

Pengenalan:
Dengan pembangunan Internet of Things, Protokol Pengangkutan Telemetri Beratur Mesej (MQTT) memainkan peranan penting dalam komunikasi antara peranti penderia dan aplikasi bahagian belakang. Sebagai protokol ringan, MQTT mempunyai ciri penggunaan tenaga yang rendah, kebolehpercayaan yang tinggi dan kebolehskalaan. Dalam pembangunan PHP, MQTT digunakan untuk melanggan dan menerbitkan mesej, yang boleh berkomunikasi dengan mudah dengan peranti sensor dan menghantar data ke aplikasi back-end untuk pemprosesan dan paparan. Artikel ini akan memperkenalkan aplikasi praktikal MQTT dalam pembangunan PHP dan menyediakan contoh kod yang berkaitan.

1. Pengenalan kepada MQTT:
MQTT ialah protokol penghantaran baris gilir mesej berdasarkan model terbitkan/langgan. Ia menggunakan format mesej binari yang ringan dan sesuai untuk pelbagai peranti perkakasan seperti penderia dan sistem terbenam. Protokol MQTT terutamanya mengandungi dua peranan: penerbit mesej dan pelanggan mesej. Penerbit menerbitkan mesej kepada topik tertentu, manakala pelanggan melanggan topik yang diminati untuk menerima mesej yang berkaitan. Protokol MQTT juga menyokong tetapan tahap QoS (Kualiti Perkhidmatan) mesej untuk memastikan kebolehpercayaan data.

2. Pasang pelayan MQTT:
Sebelum mula mempraktikkan MQTT dalam pembangunan PHP, kita perlu membina pelayan MQTT terlebih dahulu. Berikut ialah langkah ringkas untuk menyediakan pelayan MQTT:

  1. Muat turun dan pasang pelayan MQTT seperti Mosquitto.
  2. Jalankan pelayan MQTT, port mendengar lalai ialah 1883.

3. Menggunakan MQTT dalam PHP:
Proses menggunakan MQTT untuk langganan dan penerbitan mesej dalam PHP adalah seperti berikut:

  1. Memperkenalkan perpustakaan pelanggan MQTT:
    Mula-mula anda perlu memperkenalkan perpustakaan pelanggan MQTT, yang biasa digunakan. klien MQTT terpakai dalam PHP Perpustakaan terminal termasuk phpMQTT dan mosquitto-php, dsb. Artikel ini mengambil phpMQTT sebagai contoh, yang boleh dipasang melalui komposer:

    composer require bluerhinos/phpmqttclient
  2. Konfigurasi klien MQTT:
    Sebelum melaksanakan operasi MQTT dalam kod PHP, anda perlu mengkonfigurasi sambungan terlebih dahulu, termasuk alamat pelayan, nombor port, tahap QoS , dsb. Berikut ialah contoh konfigurasi:

    $mqttServer = 'localhost'; // MQTT服务器地址
    $mqttPort = 1883; // MQTT服务器端口
    $mqttClientId = 'php_script'; // 客户端ID
    $mqttUsername = ''; //用户名
    $mqttPassword = ''; // 密码
  3. Langganan mesej MQTT:
    Untuk melanggan topik dalam PHP, anda boleh menggunakan kaedah langgan. Berikut ialah contoh: subscribe方法。以下是一个示例:

    require('phpMQTT.php');
    $mqtt = new phpMQTT($mqttServer, $mqttPort, $mqttClientId);
    if($mqtt->connect(true, NULL, $mqttUsername, $mqttPassword)) {
      $topics['topic_name'] = array('qos' => 0, 'function' => 'dataCallback');
      $mqtt->subscribe($topics, 0);
      while($mqtt->proc()){
      }
      $mqtt->close();
    } else {
      echo "连接MQTT服务器失败!";
      exit(1);
    }
    function dataCallback($topic, $payload) {
      echo "收到消息:$payload";
    }
  4. MQTT消息的发布:
    在PHP中发布一个消息,可以使用publish方法。以下是一个示例:

    require('phpMQTT.php');
    $mqtt = new phpMQTT($mqttServer, $mqttPort, $mqttClientId);
    if($mqtt->connect(true, NULL, $mqttUsername, $mqttPassword)) {
      $mqtt->publish('topic_name', '消息内容', 0);
      $mqtt->close();
    } else {
      echo "连接MQTT服务器失败!";
      exit(1);
    }

四、实战应用:
下面以一个简单的实景应用为例,演示在PHP中使用MQTT进行消息订阅与发布的实际应用。

  1. 场景描述:
    假设我们有一个温度传感器设备,其将实时温度通过MQTT协议发布到主题为temperature
    require('phpMQTT.php');
    
    $mqttServer = 'localhost'; // MQTT服务器地址
    $mqttPort = 1883; // MQTT服务器端口
    $mqttClientId = 'php_script'; // 客户端ID
    
    $mqtt = new phpMQTT($mqttServer, $mqttPort, $mqttClientId);
    
    if($mqtt->connect(true, NULL, NULL, NULL)) {
        $topics['temperature'] = array('qos' => 0, 'function' => 'temperatureCallback');
        $mqtt->subscribe($topics, 0);
    
        echo "开始订阅温度数据...
    ";
    
        while($mqtt->proc()){
        }
    
        $mqtt->close();
    } else {
        echo "连接MQTT服务器失败!";
        exit(1);
    }
    
    function temperatureCallback($topic, $payload) {
        echo "收到温度消息:$payload
    ";
        // 在这里进行温度数据的处理,如存储到数据库或展示在Web界面上
    }

  2. Penerbitan mesej MQTT:
  3. Untuk menerbitkan mesej dalam PHP, anda boleh menggunakan kaedah publish. Berikut ialah contoh:
<!DOCTYPE html>
<html>
<head>
    <title>温度监控</title>
</head>
<body>
    <h1>温度监控</h1>
    <div id="temperature"></div>

    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script>
        $(document).ready(function() {
            var mqttServer = 'mqtt://localhost:1883';
            var clientId = 'web_client';
            var temperatureTopic = 'temperature';

            var client = mqtt.connect(mqttServer, { clientId: clientId });

            client.on('connect', function() {
                client.subscribe(temperatureTopic);
            });

            client.on('message', function(topic, message) {
                if (topic === temperatureTopic) {
                    var temperature = message.toString();
                    $('#temperature').text('当前温度:' + temperature + '℃');
                }
            });
        });
    </script>
</body>
</html>

  1. 4. Aplikasi praktikal:
  2. Yang berikut mengambil aplikasi kehidupan sebenar yang mudah sebagai contoh untuk menunjukkan aplikasi praktikal menggunakan MQTT untuk langganan mesej dan penerbitan dalam PHP.

Penerangan senario:

Andaikan kami mempunyai peranti penderia suhu yang menerbitkan suhu masa nyata melalui protokol MQTT ke saluran dengan topik suhu. Aplikasi PHP kami perlu menerima dan memproses data suhu ini dalam masa nyata, dan untuk melakukan ini, kami akan melanggan topik ini dan memaparkan suhu masa nyata melalui antara muka web.

Contoh kod PHP: 🎜Langgan data suhu dan paparkan pada antara muka web: 🎜🎜rrreee🎜🎜Contoh antara muka web: 🎜Contoh kod untuk memaparkan data suhu dalam masa nyata melalui antara muka web adalah seperti berikut: 🎜🎜rrreee🎜 Kod contoh di atas menunjukkan penggunaan aplikasi Praktikal PHP menggunakan MQTT untuk langganan dan penerbitan mesej. Dengan melanggan data suhu, kami boleh menerima data suhu dalam masa nyata untuk pemprosesan dan paparan, dan dengan menerbitkan mesej, kami boleh menghantar arahan kawalan kepada peranti penderia. Dalam pembangunan sebenar, kod boleh dikembangkan dan diselaraskan mengikut keperluan tertentu. 🎜🎜Kesimpulan: 🎜Artikel ini memperkenalkan aplikasi praktikal langganan dan penerbitan mesej MQTT dalam pembangunan PHP, dan menyediakan contoh kod yang berkaitan. Dengan menggunakan protokol MQTT, aplikasi PHP boleh berkomunikasi dengan mudah dengan peranti sensor dan merealisasikan penghantaran dan pemprosesan data masa nyata. Dalam pembangunan aplikasi IoT, menggunakan MQTT untuk pemesejan boleh meningkatkan kecekapan dan kebolehpercayaan komunikasi, dan membawa kemudahan kepada pembangunan aplikasi. 🎜

Atas ialah kandungan terperinci Langganan mesej MQTT dan amalan penerbitan 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