php mqtt 实现
PHP 实现 MQTT 的方法
MQTT(Message Queuing Telemetry Transport)是一种轻量级的发布/订阅协议,适用于物联网和低带宽环境。在 PHP 中实现 MQTT 可以通过以下方法完成。
使用 Eclipse Mosquitto 扩展
Mosquitto 是一个流行的 MQTT 代理,PHP 可以通过 Mosquitto 扩展与之交互。
安装 Mosquitto 扩展:
pecl install Mosquitto-alpha
在 php.ini 中启用扩展:
extension=mosquitto.so
发布消息示例:
$client = new Mosquitto\Client();
$client->connect("localhost", 1883);
$client->publish("topic/test", "Hello MQTT", 0, false);
$client->disconnect();
订阅消息示例:

$client = new Mosquitto\Client();
$client->onMessage(function($message) {
echo "Received message: {$message->payload}\n";
});
$client->connect("localhost", 1883);
$client->subscribe("topic/test", 0);
while (true) {
$client->loop();
}
使用 php-mqtt/client 库
php-mqtt/client 是一个纯 PHP 实现的 MQTT 客户端库,无需安装扩展。
安装库:
composer require php-mqtt/client
发布消息示例:
use PhpMqtt\Client\MqttClient;
$server = "localhost";
$port = 1883;
$client = new MqttClient($server, $port);
$client->connect();
$client->publish("topic/test", "Hello MQTT", 0);
$client->disconnect();
订阅消息示例:

use PhpMqtt\Client\MqttClient;
$client = new MqttClient("localhost", 1883);
$client->connect();
$client->subscribe("topic/test", function($topic, $message) {
echo "Received message: $message\n";
});
$client->loop(true);
使用 bluerhinos/phpmqtt 库
bluerhinos/phpmqtt 是另一个流行的 PHP MQTT 实现。
安装库:
composer require bluerhinos/phpmqtt
发布消息示例:
require("phpMQTT.php");
$mqtt = new phpMQTT("localhost", 1883, "phpClient");
if ($mqtt->connect()) {
$mqtt->publish("topic/test", "Hello MQTT", 0);
$mqtt->close();
}
订阅消息示例:
require("phpMQTT.php");
$mqtt = new phpMQTT("localhost", 1883, "phpClient");
if ($mqtt->connect()) {
$topics["topic/test"] = ["qos" => 0, "function" => function($topic, $msg) {
echo "Received message: $msg\n";
}];
$mqtt->subscribe($topics, 0);
while ($mqtt->proc()) {}
$mqtt->close();
}
注意事项
- 代理服务器:确保 MQTT 代理(如 Mosquitto、EMQX)已正确安装并运行。
- 连接参数:根据实际需求调整
host、port、username和password。 - QoS 级别:MQTT 支持 QoS 0(最多一次)、QoS 1(至少一次)和 QoS 2(恰好一次),根据场景选择。
- 保持连接:长时间运行的订阅脚本需处理网络中断和重连逻辑。
以上方法提供了多种 PHP 实现 MQTT 的方式,可根据项目需求选择适合的库或扩展。






