Heim >Backend-Entwicklung >PHP-Tutorial >Praxis zum Abonnieren und Veröffentlichen von MQTT-Nachrichten in der PHP-Entwicklung

Praxis zum Abonnieren und Veröffentlichen von MQTT-Nachrichten in der PHP-Entwicklung

WBOY
WBOYOriginal
2023-07-08 14:02:512388Durchsuche

Praktisches MQTT-Nachrichtenabonnement und -Veröffentlichung in der PHP-Entwicklung

Einführung:
Mit der Entwicklung des Internets der Dinge spielt das Message Queuing Telemetry Transport Protocol (MQTT) eine wichtige Rolle bei der Kommunikation zwischen Sensorgeräten und Back-End-Anwendungen. Als leichtgewichtiges Protokoll zeichnet sich MQTT durch geringen Energieverbrauch, hohe Zuverlässigkeit und Skalierbarkeit aus. In der PHP-Entwicklung wird MQTT zum Abonnieren und Veröffentlichen von Nachrichten verwendet, die problemlos mit Sensorgeräten kommunizieren und Daten zur Verarbeitung und Anzeige an die Back-End-Anwendung übertragen können. In diesem Artikel wird die praktische Anwendung von MQTT in der PHP-Entwicklung vorgestellt und relevante Codebeispiele bereitgestellt.

1. Einführung in MQTT:
MQTT ist ein Nachrichtenwarteschlangenübertragungsprotokoll, das auf dem Publish/Subscribe-Modell basiert. Es verwendet ein leichtes binäres Nachrichtenformat und eignet sich für verschiedene Hardwaregeräte wie Sensoren und eingebettete Systeme. Das MQTT-Protokoll enthält hauptsächlich zwei Rollen: Nachrichtenherausgeber und Nachrichtenabonnent. Herausgeber veröffentlichen Nachrichten zu einem bestimmten Thema, während Abonnenten interessante Themen abonnieren, um relevante Nachrichten zu erhalten. Das MQTT-Protokoll unterstützt auch Einstellungen der Nachrichten-QoS-Ebene (Quality of Service), um die Datenzuverlässigkeit sicherzustellen.

2. MQTT-Server installieren:
Bevor wir mit der Praxis von MQTT in der PHP-Entwicklung beginnen, müssen wir zunächst einen MQTT-Server erstellen. Hier sind die kurzen Schritte zum Einrichten eines MQTT-Servers:

  1. Laden Sie einen MQTT-Server wie Mosquitto herunter und installieren Sie ihn.
  2. Führen Sie den MQTT-Server aus. Der Standard-Abhörport ist 1883.

3. Verwendung von MQTT in PHP:
Der Prozess der Verwendung von MQTT in PHP zum Abonnieren und Veröffentlichen von Nachrichten ist wie folgt:

  1. Einführung in die MQTT-Client-Bibliothek:
    Zuerst müssen Sie die MQTT-Client-Bibliothek vorstellen, die häufig verwendet wird Verwendeter MQTT-Client in PHP. Die Terminalbibliotheken umfassen phpMQTT und mosquitto-php usw. In diesem Artikel wird phpMQTT als Beispiel verwendet, das über Composer installiert werden kann:

    composer require bluerhinos/phpmqttclient
  2. MQTT-Client-Konfiguration:
    Bevor Sie MQTT-Vorgänge im PHP-Code ausführen, müssen Sie zuerst die Verbindung konfigurieren, einschließlich Serveradresse, Portnummer und QoS-Ebene , usw. Das Folgende ist eine Beispielkonfiguration:

    $mqttServer = 'localhost'; // MQTT服务器地址
    $mqttPort = 1883; // MQTT服务器端口
    $mqttClientId = 'php_script'; // 客户端ID
    $mqttUsername = ''; //用户名
    $mqttPassword = ''; // 密码
  3. Abonnement von MQTT-Nachrichten:
    Um ein Thema in PHP zu abonnieren, können Sie die Methode subscribe verwenden. Das Folgende ist ein Beispiel: 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. Veröffentlichen von MQTT-Nachrichten:
  3. Um eine Nachricht in PHP zu veröffentlichen, können Sie die Methode publish verwenden. Das Folgende ist ein Beispiel:
<!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. Praktische Anwendung:
  2. Im Folgenden wird eine einfache reale Anwendung als Beispiel verwendet, um die praktische Anwendung der Verwendung von MQTT für das Abonnieren und Veröffentlichen von Nachrichten in PHP zu demonstrieren.

Szenariobeschreibung:

Angenommen, wir haben ein Temperatursensorgerät, das Echtzeittemperaturen über das MQTT-Protokoll an einen Kanal mit dem Thema temperature veröffentlicht. Unsere PHP-Anwendung muss diese Temperaturdaten in Echtzeit empfangen und verarbeiten. Dazu werden wir dieses Thema abonnieren und die Echtzeittemperatur über die Weboberfläche anzeigen.

PHP-Codebeispiel: 🎜Temperaturdaten abonnieren und auf der Weboberfläche anzeigen: 🎜🎜rrreee🎜🎜Weboberflächenbeispiel: 🎜Der Beispielcode für die Anzeige von Temperaturdaten in Echtzeit über die Weboberfläche lautet wie folgt: 🎜🎜rrreee🎜 Der obige Beispielcode demonstriert die Verwendung von PHP. Praktische Anwendung der Verwendung von MQTT zum Abonnieren und Veröffentlichen von Nachrichten. Durch das Abonnieren von Temperaturdaten können wir Temperaturdaten in Echtzeit empfangen, verarbeiten und anzeigen und durch die Veröffentlichung von Nachrichten Steueranweisungen an Sensorgeräte senden. In der tatsächlichen Entwicklung kann der Code entsprechend den spezifischen Anforderungen erweitert und angepasst werden. 🎜🎜Fazit: 🎜Dieser Artikel stellt die praktische Anwendung des Abonnierens und Veröffentlichens von MQTT-Nachrichten in der PHP-Entwicklung vor und bietet relevante Codebeispiele. Durch die Verwendung des MQTT-Protokolls können PHP-Anwendungen problemlos mit Sensorgeräten kommunizieren und eine Datenübertragung und -verarbeitung in Echtzeit realisieren. Bei der IoT-Anwendungsentwicklung kann die Verwendung von MQTT für die Nachrichtenübermittlung die Kommunikationseffizienz und -zuverlässigkeit verbessern und die Anwendungsentwicklung komfortabler machen. 🎜

Das obige ist der detaillierte Inhalt vonPraxis zum Abonnieren und Veröffentlichen von MQTT-Nachrichten in der PHP-Entwicklung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn