php mqtt 实现
PHP 实现 MQTT 通信的方法
使用 PHP 实现 MQTT 通信可以通过第三方库或扩展完成,以下是常见的实现方式:
使用 php-mqtt/client 库
php-mqtt/client 是一个纯 PHP 实现的 MQTT 客户端库,支持 MQTT 3.1 和 3.1.1 协议。
安装依赖:
composer require php-mqtt/client
发布消息示例:
<?php
use PhpMqtt\Client\MqttClient;
use PhpMqtt\Client\ConnectionSettings;
$server = 'broker.example.com';
$port = 1883;
$clientId = 'php-publisher';
$username = 'user';
$password = 'pass';
$mqtt = new MqttClient($server, $port, $clientId);
$connectionSettings = (new ConnectionSettings)
->setUsername($username)
->setPassword($password);
$mqtt->connect($connectionSettings, true);
$mqtt->publish('topic/test', 'Hello World!', 0);
$mqtt->disconnect();
订阅消息示例:

<?php
use PhpMqtt\Client\MqttClient;
use PhpMqtt\Client\ConnectionSettings;
$server = 'broker.example.com';
$port = 1883;
$clientId = 'php-subscriber';
$username = 'user';
$password = 'pass';
$mqtt = new MqttClient($server, $port, $clientId);
$connectionSettings = (new ConnectionSettings)
->setUsername($username)
->setPassword($password);
$mqtt->connect($connectionSettings, true);
$mqtt->subscribe('topic/test', function ($topic, $message) {
echo "Received message on topic [$topic]: $message\n";
}, 0);
$mqtt->loop(true);
$mqtt->disconnect();
使用 Mosquitto PHP 扩展
Mosquitto 是一个流行的 MQTT 代理,其 PHP 扩展提供了原生支持。
安装扩展:
pecl install Mosquitto-alpha
发布消息示例:

<?php
$client = new Mosquitto\Client('php-publisher');
$client->setCredentials('user', 'pass');
$client->connect('broker.example.com', 1883, 60);
$client->onConnect(function() use ($client) {
$client->publish('topic/test', 'Hello World!', 0, false);
});
$client->loopForever();
订阅消息示例:
<?php
$client = new Mosquitto\Client('php-subscriber');
$client->setCredentials('user', 'pass');
$client->connect('broker.example.com', 1883, 60);
$client->onMessage(function($message) {
printf("Received message on topic [%s]: %s\n",
$message->topic, $message->payload);
});
$client->subscribe('topic/test', 0);
$client->loopForever();
使用 Bluerhinos/phpMQTT 库
这是一个轻量级的 PHP MQTT 客户端库,适合简单场景。
安装依赖:
composer require bluerhinos/phpmqtt
基本使用示例:
<?php
require('phpMQTT.php');
$server = 'broker.example.com';
$port = 1883;
$username = 'user';
$password = 'pass';
$client_id = 'php-client';
$mqtt = new Bluerhinos\phpMQTT($server, $port, $client_id);
if ($mqtt->connect(true, NULL, $username, $password)) {
$mqtt->publish('topic/test', 'Hello World!', 0);
$mqtt->close();
} else {
echo "Connection failed\n";
}
注意事项
- 确保 MQTT 代理服务器(如 Mosquitto、EMQX 等)已正确配置并运行
- 生产环境建议使用 TLS/SSL 加密连接
- 对于长时间运行的订阅客户端,需要处理连接断开和重连逻辑
- 考虑使用 QoS 等级(0/1/2)根据业务需求平衡可靠性和性能
以上方法可根据项目需求选择,php-mqtt/client 功能最全面,Mosquitto 扩展性能最佳,phpMQTT 最轻量。






