>  기사  >  백엔드 개발  >  MQTT 프로토콜의 PHP 클라이언트 구현 솔루션 비교 및 ​​성능 테스트

MQTT 프로토콜의 PHP 클라이언트 구현 솔루션 비교 및 ​​성능 테스트

PHPz
PHPz원래의
2023-07-08 21:00:071828검색

MQTT 프로토콜의 PHP 클라이언트 구현 비교 및 ​​성능 테스트

소개:
사물 인터넷의 급속한 발전과 함께 경량 메시지 전송 프로토콜인 MQTT(Message Queuing Telemetry Transport) 프로토콜이 인터넷에서 인기를 얻었습니다. 다양한 애플리케이션. MQTT 클라이언트를 개발할 때 적절한 구현 솔루션을 선택하고 성능을 테스트하는 것이 매우 중요합니다.

이 기사에서는 일반적인 MQTT PHP 클라이언트 구현 솔루션을 비교하고 개발자가 참조할 수 있도록 성능을 테스트합니다.

1. 배경 지식
Mosquitto, phpMQTT, eclipse-paho-php 등 선택할 수 있는 PHP MQTT 클라이언트 구현 솔루션이 많이 있습니다. 이러한 옵션은 아래에서 간략하게 소개됩니다.

  1. Mosquitto
    Mosquitto는 오픈 소스 MQTT 브로커 구현이며 MQTT C 라이브러리 및 PHP 확장도 제공합니다. 다양한 운영 체제 플랫폼을 지원하여 풍부한 기능과 안정적인 성능을 제공합니다.
  2. phpMQTT
    phpMQTT는 순수 PHP를 기반으로 작성된 MQTT 클라이언트로, 간단하고 사용하기 쉬우며 MQTT 통신을 PHP 애플리케이션에 통합해야 하는 시나리오에 적합합니다. 이는 소켓 확장에 의존하며 MQTT 브로커에 연결하고 메시지를 보내고 받는 데 사용할 수 있습니다.
  3. eclipse-paho-mqtt-php
    eclipse-paho-mqtt-php는 Eclipse Paho 팀에서 제공하는 MQTT PHP 클라이언트 라이브러리입니다. MQTT 5.0 프로토콜에 대한 지원을 제공하고 SSL 및 영구 세션과 같은 고급 기능을 제공합니다.

2. 성능 테스트
이러한 여러 구현 솔루션의 성능을 평가하기 위해 동일한 테스트 시나리오를 사용하고 각 솔루션의 성능 지표를 기록합니다.

테스트에서는 다음과 같은 환경과 방법을 채택했습니다.

  • 하드웨어 환경: 더 나은 성능을 제공하는 서버를 사용합니다.
  • 테스트 시나리오: 연결 성능, 메시지 보내기 및 메시지 받기를 각각 테스트합니다.
  • 동시성: 테스트를 위해 다양한 수의 동시 연결을 시뮬레이션하고 각 솔루션의 성능을 기록합니다.

테스트 결과 요약은 다음과 같습니다.

  1. 연결 성능 ​​테스트

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. 메시지 보내기 성능 테스트

모기:

<?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. 수신 메시지 성능 테스트

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 . "
";
}
?>

결과가 다른 동의하에 표시됨 ency, Mosquitto가 좋은 성능을 보여주었고, phpMQTT가 뒤따르고 eclipse-paho-mqtt-php는 연결 성능과 메시지 전송 성능이 상대적으로 좋지 않습니다.

결론:

일반적인 MQTT PHP 클라이언트 구현의 비교 및 ​​성능 테스트를 통해 Mosquitto는 특히 메시지 연결 및 게시에서 탁월한 성능을 보이는 것으로 나타났습니다. 경량 솔루션인 phpMQTT는 상대적으로 간단하고 사용하기 쉬우며 일부 경량 시나리오에 적합합니다. eclipse-paho-mqtt-php는 일부 고급 기능을 제공하지만 성능이 다소 부족합니다. 개발자는 자신의 필요에 따라 적절한 구현 솔루션을 선택할 수 있습니다.


지면이 제한된 이 기사에서는 MQTT PHP 클라이언트 구현 솔루션에 대한 간략한 소개와 성능 테스트만 제공합니다. 실제 프로젝트에서는 가장 적합한 솔루션을 선택하기 위해 특정 요구 사항과 특정 시나리오를 기반으로 보다 세부적인 성능 및 기능 테스트를 수행해야 합니다.

참고자료:

Mosquitto 공식 홈페이지: https://mosquitto.org/
  1. phpMQTT 라이브러리: https://github.com/bluerhinos/phpMQTT
  2. eclipse-paho-mqtt-php 라이브러리: https:// github.com/eclipse/paho.mqtt.php

위 내용은 MQTT 프로토콜의 PHP 클라이언트 구현 솔루션 비교 및 ​​성능 테스트의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.