当前位置:首页 > PHP

php实现mqtt

2026-02-14 21:37:53PHP

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 = 'username';
$password = 'password';

$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 = 'username';
$password = 'password';

$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();

使用 bluerhinos/phpmqtt

另一个常用库是 bluerhinos/phpmqtt,这是一个纯 PHP 实现的 MQTT 客户端。

php实现mqtt

安装依赖:

composer require bluerhinos/phpmqtt

发布消息示例:

<?php
require('vendor/autoload.php');
use Bluerhinos\phpMQTT;

$server = 'broker.example.com'; 
$port = 1883;
$username = 'username';
$password = 'password';
$client_id = 'php-publisher';

$mqtt = new phpMQTT($server, $port, $client_id);
if ($mqtt->connect(true, NULL, $username, $password)) {
    $mqtt->publish('topic/test', 'Hello World!', 0);
    $mqtt->close();
}

订阅消息示例:

php实现mqtt

<?php
require('vendor/autoload.php');
use Bluerhinos\phpMQTT;

$server = 'broker.example.com';
$port = 1883;
$username = 'username';
$password = 'password';
$client_id = 'php-subscriber';

$mqtt = new phpMQTT($server, $port, $client_id);
if(!$mqtt->connect(true, NULL, $username, $password)) {
    exit(1);
}

$topics['topic/test'] = array('qos' => 0, 'function' => 'procmsg');
$mqtt->subscribe($topics, 0);

function procmsg($topic, $msg) {
    echo "Msg Recieved: {$msg}\n";
}

while($mqtt->proc()) {}
$mqtt->close();

使用 Mosquitto 扩展

PHP 也可以使用 Mosquitto 扩展来连接 MQTT 代理。

安装 Mosquitto 扩展:

pecl install Mosquitto-alpha

发布消息示例:

<?php
$client = new Mosquitto\Client();
$client->setCredentials('username', 'password');
$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();
$client->setCredentials('username', 'password');
$client->connect('broker.example.com', 1883, 60);

$client->onConnect(function() use ($client) {
    $client->subscribe('topic/test', 0);
});

$client->onMessage(function($message) {
    printf("Received message on topic %s: %s\n", $message->topic, $message->payload);
});

$client->loopForever();

注意事项

  • 确保 MQTT 代理服务器地址、端口、用户名和密码正确
  • 根据需求选择合适的 QoS 等级(0、1 或 2)
  • 长时间运行的订阅脚本需要处理连接断开和重连逻辑
  • 生产环境建议添加错误处理和日志记录

标签: phpmqtt
分享给朋友:

相关文章

php实现购物车

php实现购物车

PHP实现购物车功能 购物车功能是电商网站的核心模块之一,通常涉及商品添加、删除、数量修改和结算等操作。以下是使用PHP实现购物车功能的几种方法。 使用Session存储购物车数据 Session…

php实现验证码

php实现验证码

PHP实现验证码的方法 使用GD库生成验证码 GD库是PHP中处理图像的扩展,可用于生成验证码图片。 <?php session_start(); $width = 120; $height…

git php实现

git php实现

Git 与 PHP 的集成实现 使用 PHP 执行 Git 命令 通过 PHP 的 exec()、shell_exec() 或 passthru() 函数可以直接调用 Git 命令,适用于服务器端操作…

php实现定时任务

php实现定时任务

PHP 实现定时任务的几种方法 在 PHP 中实现定时任务可以通过多种方式完成,具体选择取决于项目需求和服务器环境。以下是常见的实现方法: 使用 Cron 任务 Cron 是 Linux 系统中常…

php实现队列

php实现队列

PHP实现队列的方法 队列是一种先进先出(FIFO)的数据结构,PHP可以通过多种方式实现队列功能。 使用数组模拟队列 PHP数组可以模拟队列的基本操作,通过array_push和array_shi…

php实现

php实现

PHP 实现的基本方法 PHP 是一种服务器端脚本语言,广泛用于 Web 开发。以下是 PHP 实现的一些常见方法。 变量与数据类型 PHP 变量以 $ 开头,支持多种数据类型: $n…