Heim  >  Artikel  >  Backend-Entwicklung  >  Vergleich und Leistungstests von PHP-Client-Implementierungslösungen des MQTT-Protokolls

Vergleich und Leistungstests von PHP-Client-Implementierungslösungen des MQTT-Protokolls

PHPz
PHPzOriginal
2023-07-08 21:00:071809Durchsuche

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.

  1. Mosquitto
    Mosquitto ist eine Open-Source-MQTT-Broker-Implementierung und bietet außerdem eine MQTT-C-Bibliothek und eine PHP-Erweiterung. Es bietet umfangreiche Funktionalität und zuverlässige Leistung und unterstützt mehrere Betriebssystemplattformen.
  2. phpMQTT
    phpMQTT ist ein MQTT-Client, der auf reinem PHP basiert. Er ist einfach und benutzerfreundlich und eignet sich für Szenarien, in denen MQTT-Kommunikation in PHP-Anwendungen integriert werden muss. Es basiert auf der Sockets-Erweiterung und kann zum Herstellen einer Verbindung zu einem MQTT-Broker sowie zum Senden und Empfangen von Nachrichten verwendet werden.
  3. eclipse-paho-mqtt-php
    eclipse-paho-mqtt-php ist eine MQTT-PHP-Clientbibliothek, die vom Eclipse Paho-Team bereitgestellt wird. Es bietet Unterstützung für das MQTT 5.0-Protokoll und bietet erweiterte Funktionen wie SSL und persistente Sitzungen.

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:

  • Hardwareumgebung: Verwenden Sie einen Server mit besserer Leistung.
  • Testszenario: Testen Sie die Leistung der Verbindung, des Sendens von Nachrichten bzw. des Empfangens von Nachrichten.
  • Parallelität: Simulieren Sie eine unterschiedliche Anzahl gleichzeitiger Verbindungen zum Testen und zeichnen Sie die Leistung jeder Lösung auf.

Hier ist eine Zusammenfassung der Testergebnisse:

  1. Verbindungsleistungstest

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();
}
?>
  1. Message-Leistungstest senden

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();
}
?>
  1. Message-Leistungstest empfangen

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/
  1. phpMQTT-Bibliothek: https://github.com/bluerhinos/phpMQTT
  2. eclipse-paho-mqtt-php-Bibliothek: https:// github.com/eclipse/paho.mqtt.php

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!

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