Comparaison et tests de performances des solutions d'implémentation de clients PHP pour le protocole MQTT

PHPz
Libérer: 2023-07-08 21:02:02
original
1829 Les gens l'ont consulté

Comparaison et tests de performances des implémentations client PHP du protocole MQTT

Introduction :
Avec le développement rapide de l'Internet des objets, le protocole MQTT (Message Queuing Telemetry Transport), en tant que protocole léger de transmission de messages, a gagné en popularité sur Internet des applications des objets. Large gamme d'applications. Lors du développement d'un client MQTT, il est très important de choisir une solution d'implémentation appropriée et de tester ses performances.

Cet article comparera les solutions courantes d'implémentation de client PHP MQTT et testera leurs performances pour référence par les développeurs.

1. Connaissances de base
Il existe de nombreuses solutions d'implémentation de client PHP MQTT parmi lesquelles vous pouvez choisir, telles que Mosquitto, phpMQTT, Eclipse-paho-php, etc. Ces options seront brièvement présentées ci-dessous.

  1. Mosquitto
    Mosquitto est une implémentation de courtier MQTT open source et fournit également une bibliothèque MQTT C et une extension PHP. Il offre des fonctionnalités riches et des performances fiables, prenant en charge plusieurs plates-formes de systèmes d'exploitation.
  2. phpMQTT
    phpMQTT est un client MQTT écrit basé sur du PHP pur. Il est simple et facile à utiliser, et convient aux scénarios où la communication MQTT doit être intégrée dans les applications PHP. Il s'appuie sur l'extension sockets et peut être utilisé pour se connecter à un courtier MQTT et envoyer et recevoir des messages.
  3. eclipse-paho-mqtt-php
    eclipse-paho-mqtt-php est une bibliothèque client PHP MQTT fournie par l'équipe Eclipse Paho. Il prend en charge le protocole MQTT 5.0 et fournit des fonctionnalités avancées telles que SSL et des sessions persistantes.

2. Test de performance
Afin d'évaluer les performances de ces différentes solutions de mise en œuvre, nous utilisons le même scénario de test et enregistrons les indicateurs de performance de chaque solution.

Lors du test, nous avons adopté l'environnement et les méthodes suivants :

  • Environnement matériel : utilisez un serveur avec de meilleures performances.
  • Scénario de test : testez respectivement les performances de connexion, d'envoi et de réception de messages.
  • Concurrency : simulez différents nombres de connexions simultanées à des fins de test et enregistrez les performances de chaque solution.

Voici un résumé des résultats du test :

  1. Test de performances de connexion

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();
?>
Copier après la connexion

phpMQTT :

<?php
require('phpMQTT.php');

$mqtt = new phpMQTT('localhost', 1883, 'phpMQTT');
if ($mqtt->connect()) {
    echo "Connection succeeded.
";
    $mqtt->close();
}
?>
Copier après la connexion

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();
}
?>
Copier après la connexion
  1. Envoyer un message test de performances

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(); 
?>
Copier après la connexion

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();
}
?>
Copier après la connexion

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();
}
?>
Copier après la connexion
  1. Recevoir un test de performances de message

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();
?>
Copier après la connexion

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 . "
";
}
?>
Copier après la connexion

Res : ults affichés Sous différentes concurrences, Mosquitto montre de bonnes performances, suivi de phpMQTT, et Eclipse-paho-mqtt-php est relativement médiocre en termes de performances de connexion et d'envoi de messages.

Conclusion :

Grâce à la comparaison et aux tests de performances des implémentations courantes du client PHP MQTT, nous avons constaté que Mosquitto affiche d'excellentes performances, notamment en termes de connexion et de publication de messages. En tant que solution légère, phpMQTT est relativement simple et facile à utiliser et convient à certains scénarios légers. Eclipse-paho-mqtt-php fournit des fonctionnalités avancées, mais manque quelque peu de performances. Les développeurs peuvent choisir la solution de mise en œuvre appropriée en fonction de leurs propres besoins.


Limité par l'espace, cet article ne fournit qu'une brève introduction et un test de performances de la solution d'implémentation du client PHP MQTT. Dans les projets réels, des tests de performances et fonctionnels plus détaillés doivent être effectués en fonction de besoins spécifiques et de scénarios spécifiques pour sélectionner la solution la plus appropriée.

Références :

Site officiel de Mosquitto : https://mosquitto.org/
  1. bibliothèque phpMQTT : https://github.com/bluerhinos/phpMQTT
  2. bibliothèque eclipse-paho-mqtt-php : https:// github.com/eclipse/paho.mqtt.php

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal