首頁 後端開發 php教程 MQTT在PHP開發的消息訂閱與發布實戰

MQTT在PHP開發的消息訂閱與發布實戰

Jul 08, 2023 pm 02:02 PM
mqtt 訊息發布 訊息訂閱

MQTT在PHP開發中的消息訂閱與發布實戰

引言:
隨著物聯網的發展,訊息佇列遙測傳輸協定(MQTT)在感測器設備和後端應用之間的通信中起著重要的作用。作為一種輕量級的協議,MQTT具有低能耗、高可靠性和可擴展性的特性。在PHP開發中,利用MQTT實現訊息的訂閱和發布,可以方便地與感測器設備進行通信,並將資料傳輸到後端應用程式中進行處理和展示。本文將介紹MQTT在PHP開發的實戰應用,並提供相關的程式碼範例。

一、MQTT簡介:
MQTT是一種基於發布/訂閱模式的訊息佇列傳輸協定。它採用輕量級的二進位訊息格式,適用於各種硬體設備,如感測器和嵌入式系統。 MQTT協議中主要包含兩個角色:訊息發布者和訊息訂閱者。發布者將訊息發佈到一個特定的主題上,而訂閱者則對感興趣的主題進行訂閱,從而接收相關的訊息。 MQTT協定也支援訊息的QoS(Quality of Service)等級設置,從而確保資料的可靠性。

二、安裝MQTT伺服器:
在開始進行PHP開發中的MQTT實戰前,我們需要先搭建一個MQTT伺服器。以下是搭建MQTT伺服器的簡要步驟:

  1. 下載並安裝MQTT伺服器,如Mosquitto。
  2. 運行MQTT伺服器,預設監聽連接埠為1883。

三、PHP中使用MQTT:
在PHP中使用MQTT進行訊息訂閱和發布的過程如下:

  1. ##引入MQTT客戶端程式庫:

    首先需要引進MQTT客戶端函式庫,PHP常用的MQTT客戶端函式庫有phpMQTT和mosquitto-php等。本文以phpMQTT為例,可以透過composer進行安裝:

    composer require bluerhinos/phpmqttclient
    登入後複製

  2. MQTT客戶端設定:

    在PHP程式碼中進行MQTT操作之前,需要先進行連線配置,包括伺服器位址、連接埠號碼、QoS等級等。以下是一個範例的配置:

    $mqttServer = 'localhost'; // MQTT服务器地址
    $mqttPort = 1883; // MQTT服务器端口
    $mqttClientId = 'php_script'; // 客户端ID
    $mqttUsername = ''; //用户名
    $mqttPassword = ''; // 密码
    登入後複製

  3. MQTT訊息的訂閱:

    在PHP中訂閱一個主題,可以使用
    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的頻道上。我們的PHP應用程式需要即時接收並處理該溫度數據,為此,我們將訂閱該主題,並透過Web介面展示即時溫度。
  2. PHP程式碼範例:
  3. 訂閱溫度資料並顯示在Web介面上:
  4. 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界面上
    }
    登入後複製
    Web介面範例:
  1. 透過Web介面即時展示溫度數據的範例程式碼如下:
  2. <!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>
    登入後複製

以上範例程式碼示範了在PHP中使用MQTT進行訊息訂閱和發布的實戰應用程式。透過訂閱溫度數據,我們可以即時接收溫度數據並進行處理和展示,而透過發布訊息,我們可以向感測器設備發送控制指令。在實際開發中,可以根據具體需求擴展和調整程式碼。

結論:

本文介紹了MQTT在PHP開發中的訊息訂閱與發布實戰,並提供了相關的程式碼範例。透過使用MQTT協議,PHP應用可以方便地與感測器設備進行通信,並實現即時數據的傳輸和處理。在物聯網應用開發中,利用MQTT進行訊息傳遞可以提高通訊效率和可靠性,為應用開發帶來便利。

以上是MQTT在PHP開發的消息訂閱與發布實戰的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

MQTT在PHP開發中的容錯與安全性考慮 MQTT在PHP開發中的容錯與安全性考慮 Jul 08, 2023 am 11:34 AM

MQTT在PHP開發中的容錯與安全性考量概述:MQTT(MessageQueuingTelemetryTransport)是一種輕量級的通訊協議,被廣泛用於物聯網和機器對機器(M2M)通訊。在PHP開發中使用MQTT可以實現即時訊息傳遞和遠端控制等功能。本文將介紹在PHP開發中使用MQTT時需要考慮的容錯和安全性問題,並提供一些程式碼範例供參考。一、容錯

如何使用PHP和MQTT為網站新增即時使用者聊天功能 如何使用PHP和MQTT為網站新增即時使用者聊天功能 Jul 08, 2023 pm 07:46 PM

如何使用PHP和MQTT為網站添加即時使用者聊天功能在當今網路時代,網站使用者越來越需要即時的交流和溝通,為了滿足這種需求,我們可以使用PHP和MQTT來為網站添加即時使用者聊天功能。本文將介紹如何使用PHP和MQTT實現網站即時使用者聊天功能,並提供程式碼範例。確保環境準備在開始之前,確保你已經安裝並設定了PHP和MQTT的運作環境。你可以使用XAMPP等整合開發

PHP MQTT客戶端開髮指南 PHP MQTT客戶端開髮指南 Mar 27, 2024 am 09:21 AM

MQTT(MessageQueuingTelemetryTransport)是一種輕量級的訊息傳輸協議,通常用於物聯網設備之間的通訊。 PHP是一種常用的伺服器端程式語言,可以用來開發MQTT客戶端。本文將介紹如何使用PHP開發MQTT客戶端,並包含以下內容:MQTT協定的基本概念PHPMQTT客戶端程式庫的選取和使用實例:使用PHPMQTT客戶端發布和

使用PHP和MQTT實現即時數據分析的最佳實踐 使用PHP和MQTT實現即時數據分析的最佳實踐 Jul 08, 2023 pm 05:57 PM

使用PHP和MQTT實現即時數據分析的最佳實踐隨著物聯網和大數據技術的迅速發展,即時數據分析在各行各業中變得越來越重要。在即時數據分析中,MQTT(MQTelemetryTransport)作為一種輕量級的通訊協議,被廣泛應用於物聯網領域。結合PHP和MQTT,可以快速、有效率地實現即時數據分析。本文將介紹使用PHP和MQTT實現即時數據分析的最佳實踐,並

使用PHP和MQTT建立即時聊天應用 使用PHP和MQTT建立即時聊天應用 Jul 08, 2023 pm 03:18 PM

使用PHP和MQTT建立即時聊天應用引言:隨著網路的快速發展和智慧型裝置的普及,即時通訊已經成為了現代社會中必不可少的功能之一。為了滿足人們的溝通需求,開發一個即時聊天應用程式已經成為了眾多開發者的追求目標。在本篇文章中,我們將介紹如何使用PHP和MQTT(MessageQueuingTelemetryTransport)協定來建立一個即時聊天應用。什麼是

MQTT協議的PHP實現方案比較和選擇指南 MQTT協議的PHP實現方案比較和選擇指南 Jul 08, 2023 pm 10:43 PM

MQTT協定的PHP實作方案比較和選擇指南摘要:MQTT(MessageQueuingTelemetryTransport)是一種輕量級的發布/訂閱通訊協議,適用於物聯網等低頻寬、高延遲的環境。本文將探討MQTT協定在PHP中的實現方案,並提供比較和選擇指南。引言:隨著物聯網的快速發展,越來越多的設備需要即時資料傳輸和通訊。 MQTT作為一種輕量級的

Java開發實務經驗:運用MQTT實現物聯網功能 Java開發實務經驗:運用MQTT實現物聯網功能 Nov 20, 2023 pm 01:45 PM

隨著物聯網技術的發展,越來越多的設備能夠連接到互聯網,並透過互聯網進行通訊和互動。而在物聯網應用開發中,訊息佇列遙測傳輸協定(MQTT)作為一種輕量級的通訊協議,被廣泛採用。本文將介紹如何運用Java開發實務經驗,透過MQTT實現物聯網功能。一、什麼是MQTTMQTT是一種基於發布/訂閱模式的訊息傳輸協定。它設計簡單、開銷低,適用於快速傳輸小資料量的應用程式場景

使用PHP和MQTT實現遠端設備控制的技術指南 使用PHP和MQTT實現遠端設備控制的技術指南 Jul 08, 2023 pm 05:09 PM

使用PHP和MQTT實現遠端設備控制的技術指南引言:現代科技的快速發展,使得物聯網(IoT)逐漸成為現實。在物聯網中,透過網路連接各種設備,我們可以實現對設備的遠端控制和監控。 MQTT是一種輕量級的訊息傳輸協議,可以方便地實現設備之間的通訊。本文將介紹如何使用PHP和MQTT協定來實現遠端設備控制。一、準備工作:在開始之前,我們需要安裝MQTT伺服器和PH

See all articles