Heim >Backend-Entwicklung >PHP-Tutorial >Praxis zum Abonnieren und Veröffentlichen von MQTT-Nachrichten in der PHP-Entwicklung
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:
3. Verwendung von MQTT in PHP:
Der Prozess der Verwendung von MQTT in PHP zum Abonnieren und Veröffentlichen von Nachrichten ist wie folgt:
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
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 = ''; // 密码
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"; }
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进行消息订阅与发布的实际应用。
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界面上 }
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>
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.
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!