Vergleich und Leistungstests von PHP-Client-Implementierungen des MQTT-Protokolls
Einführung:
Mit der rasanten Entwicklung des Internets der Dinge hat das MQTT-Protokoll (Message Queuing Telemetry Transport) als leichtgewichtiges Nachrichtenübertragungsprotokoll im Internet an Popularität gewonnen der Dinge Anwendungen. Breites Anwendungsspektrum. Bei der Entwicklung eines MQTT-Clients ist es sehr wichtig, eine geeignete Implementierungslösung auszuwählen und deren Leistung zu testen.
In diesem Artikel werden gängige MQTT-PHP-Client-Implementierungslösungen verglichen und ihre Leistung als Referenz für Entwickler getestet.
1. Hintergrundwissen
Es gibt viele PHP-MQTT-Client-Implementierungslösungen, aus denen Sie wählen können, wie zum Beispiel Mosquitto, phpMQTT, Eclipse-Paho-PHP usw. Diese Optionen werden im Folgenden kurz vorgestellt.
2. Leistungstest
Um die Leistung dieser verschiedenen Implementierungslösungen zu bewerten, verwenden wir dasselbe Testszenario und zeichnen die Leistungsindikatoren jeder Lösung auf.
Im Test haben wir die folgende Umgebung und Methoden übernommen:
Hier ist eine Zusammenfassung der Testergebnisse:
Mosquitto:
<?php require('mosquitto.php'); $mqtt = new MosquittoClient(); $mqtt->onConnect(function($rc) use ($mqtt) { if ($rc == 0) { echo "Connection succeeded. "; $mqtt->disconnect(); } }); $mqtt->connect('localhost', 1883, 60); $mqtt->loopForever(); ?>
phpMQTT:
<?php require('phpMQTT.php'); $mqtt = new phpMQTT('localhost', 1883, 'phpMQTT'); if ($mqtt->connect()) { echo "Connection succeeded. "; $mqtt->close(); } ?>
eclipse-paho-mqtt-php:
<?php require('eclipse-paho-mqtt.php'); use EclipseMQTTClientFactory; use EclipseMQTTConfig; $client = ClientFactory::getClient(Config::create('localhost')); if ($client->connect()) { echo "Connection succeeded. "; $client->disconnect(); } ?>
Mosquitto:
<?php require('mosquitto.php'); $mqtt = new MosquittoClient(); $mqtt->onPublish(function($message) use ($mqtt) { echo "Message published. "; $mqtt->disconnect(); }); $mqtt->connect('localhost', 1883, 60); $mqtt->publish('topic', 'Hello, MQTT!', 0); $mqtt->loopForever(); ?>
phpMQTT:
<?php require('phpMQTT.php'); $mqtt = new phpMQTT('localhost', 1883, 'phpMQTT'); if ($mqtt->connect()) { $mqtt->publish('topic', 'Hello, MQTT!', 0); echo "Message published. "; $mqtt->close(); } ?>
eclipse-paho-mqtt-php:
<?php require('eclipse-paho-mqtt.php'); use EclipseMQTTClientFactory; use EclipseMQTTConfig; $client = ClientFactory::getClient(Config::create('localhost')); if ($client->connect()) { $client->publish('topic', 'Hello, MQTT!', 0); echo "Message published. "; $client->disconnect(); } ?>
Mosquitto:
<?php require('mosquitto.php'); $mqtt = new MosquittoClient(); $mqtt->onConnect(function($rc) use ($mqtt) { if ($rc == 0) { $mqtt->subscribe('topic', 0); } }); $mqtt->onMessage(function($message) use ($mqtt) { echo "Received message: " . $message->payload . " "; $mqtt->disconnect(); }); $mqtt->connect('localhost', 1883, 60); $mqtt->loopForever(); ?>
phpMQTT:
<?php require('phpMQTT.php'); $mqtt = new phpMQTT('localhost', 1883, 'phpMQTT'); if ($mqtt->connect()) { $topics['topic'] = array('qos' => 0, 'function' => 'messageReceived'); $mqtt->subscribe($topics); while($mqtt->proc()){} $mqtt->close(); } function messageReceived($topic, $message) { echo "Received message: " . $message . " "; } ?>
Angezeigte Ergebnisse: Bei unterschiedlicher Parallelität zeigt Mosquitto eine gute Leistung. gefolgt von phpMQTT und eclipse-paho-mqtt-php weist eine relativ schlechte Verbindungsleistung und Leistung beim Senden von Nachrichten auf.
Fazit:
Durch Vergleich und Leistungstests gängiger MQTT-PHP-Client-Implementierungen haben wir festgestellt, dass Mosquitto eine hervorragende Leistung zeigt, insbesondere im Hinblick auf die Verbindung und Veröffentlichung von Nachrichten. Als leichtgewichtige Lösung ist phpMQTT relativ einfach und benutzerfreundlich und eignet sich für einige leichtgewichtige Szenarien. eclipse-paho-mqtt-php bietet einige erweiterte Funktionen, ist jedoch etwas leistungsschwach. Entwickler können entsprechend ihren eigenen Anforderungen die geeignete Implementierungslösung auswählen.
Aus Platzgründen bietet dieser Artikel nur eine kurze Einführung und einen Leistungstest der MQTT-PHP-Client-Implementierungslösung. In tatsächlichen Projekten müssen detailliertere Leistungs- und Funktionstests auf der Grundlage spezifischer Anforderungen und spezifischer Szenarien durchgeführt werden, um die am besten geeignete Lösung auszuwählen.
Referenzen:
Offizielle Website von Mosquito: https://mosquitto.org/Das obige ist der detaillierte Inhalt vonVergleich und Leistungstests von PHP-Client-Implementierungslösungen des MQTT-Protokolls. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!