PHP는 널리 사용되는 오픈 소스 다목적 스크립팅 언어로 HTML에 포함될 수 있으며 특히 웹 개발에 적합합니다.
이 글에서는 주로 PHP 프로젝트에서 php-mqtt/client
클라이언트 라이브러리를 사용하여 php-mqtt/client 客户端库 ,实现 MQTT 客户端与 MQTT 服务器的连接、订阅、取消订阅、收发消息等功能。
本文选择了 composer 上下载量最高的 php-mqtt/client
这个客户端库,更多 PHP-MQTT 客户端库可以在 Packagist - Search MQTT 中查看。
有关 php-mqtt/client 更多使用文档请参阅 Packagist php-mqtt/client。
MQTT 通信属于 HTTP 体系之外的网络通信场景,由于 PHP 特性限制,使用 PHP 体系中的 Swoole/Workerman 等专为网络通信打造的拓展可以带来更好的体验,其使用本文不再赘述,相关的 MQTT 客户端库如下:
本项目使用 7.4.21 进行开发测试,读者可用如下命令确认 PHP 的版本。
php --version PHP 7.4.21 (cli) (built: Jul 12 2021 11:52:30) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies with Zend OPcache v7.4.21, Copyright (c), by Zend Technologies
Composer 是 PHP 的一个依赖管理工具,它能管理你的 PHP 项目所需要的所有依赖关系。
composer require php-mqtt/client
本文将使用 EMQ X 提供的 免费公共 MQTT 服务器,该服务基于 EMQ X 的 MQTT 物联网云平台 创建。服务器接入信息如下:
require('vendor/autoload.php'); use \PhpMqtt\Client\MqttClient;
设置 MQTT Broker 连接地址,端口以及 topic,同时我们调用 PHP rand
函数随机生成 MQTT 客户端 id。
$server = 'broker-cn.emqx.io'; $port = 1883; $clientId = rand(5, 15); $username = 'emqx_user'; $password = null; $clean_session = false;
使用上述的参数进行连接,通过 ConnectionSettings
设置连接参数,比如
$connectionSettings = new ConnectionSettings();$connectionSettings ->setUsername($username) ->setPassword(null) ->setKeepAliveInterval(60) // Last Will 设置 ->setLastWillTopic('emqx/test/last-will') ->setLastWillMessage('client disconnect') ->setLastWillQualityOfService(1);复制代码
编写代码订阅 emqx/test
主题,并为该订阅配置回调函数以处理接收到的消息,此处我们将订阅得到的主题和消息打印出来:
// 订阅 $mqtt->subscribe('emqx/test', function ($topic, $message) { printf("Received message on topic [%s]: %s\n", $topic, $message); }, 0);
构造一个 payload,调用 publish
函数向 emqx/test
="_blank" ref="nofollow noopener noreferrer">MQTT 서버
이 문서에서는 Composer에서 가장 많이 다운로드된 php-mqtt/client
클라이언트 라이브러리를 선택합니다. PHP-MQTT 클라이언트 라이브러리는 Packagist - Search MQTT
MQTT 통신은 HTTP 시스템 외부의 네트워크 통신 시나리오입니다. PHP 기능의 한계로 인해 PHP 시스템에서 Swoole/Workerman과 같이 네트워크 통신용으로 특별히 설계된 확장을 사용하면 더 나은 경험을 제공할 수 있습니다. 관련 MQTT 클라이언트 라이브러리는 다음과 같습니다.
이 프로젝트는 개발 및 테스트용으로 7.4.21을 사용합니다. 독자는 다음 명령을 사용하여 PHP 버전을 확인할 수 있습니다.
for ($i = 0; $i< 10; $i++) { $payload = array( 'protocol' => 'tcp', 'date' => date('Y-m-d H:i:s'), 'url' => 'https://github.com/emqx/MQTT-Client-Examples' ); $mqtt->publish( // topic 'emqx/test', // payload json_encode($payload), // qos 0, // retain true ); printf("msg $i send\n"); sleep(1); } // 客户端轮询以处理传入消息和重发队列 $mqtt->loop(true);
Composer는 PHP 프로젝트에 필요한 모든 종속성을 관리할 수 있는 PHP용 종속성 관리 도구입니다.setUsername($username) ->setPassword(null) ->setKeepAliveInterval(60) // Last Will 设置 ->setLastWillTopic('emqx/test/last-will') ->setLastWillMessage('client disconnect') ->setLastWillQualityOfService(1); $mqtt = new MqttClient($server, $port, $clientId); $mqtt->connect($connectionSettings, $clean_session); printf("client connected\n"); $mqtt->subscribe('emqx/test', function ($topic, $message) { printf("Received message on topic [%s]: %s\n", $topic, $message); }, 0); for ($i = 0; $i< 10; $i++) { $payload = array( 'protocol' => 'tcp', 'date' => date('Y-m-d H:i:s'), 'url' => 'https://github.com/emqx/MQTT-Client-Examples' ); $mqtt->publish( // topic 'emqx/test', // payload json_encode($payload), // qos 0, // retain true ); printf("msg $i send\n"); sleep(1); } $mqtt->loop(true);PHP MQTT는
🎜를 사용하여 MQTT 서버에 연결합니다. 🎜🎜🎜이 기사에서는 🎜무료 공개를 사용합니다. EMQ X Server 🎜에서 제공하는 MQTT, 이 서비스는 EMQ를 기반으로 만들어졌습니다. 서버 접속 정보는 다음과 같습니다. 🎜
- 브로커: 🎜broker-cn.emqx.io🎜
- TCP 포트: 🎜1883🎜
- SSL/TLS 포트 : 🎜 8883🎜
🎜작성기 자동 로드 파일 가져오기 및 php-mqtt/client🎜
php pubsub_tcp.php🎜MQTT 브로커 연결 매개변수 설정🎜
🎜MQTT 브로커 연결 주소, 포트 및 주제를 설정하는 동시에 PHPrand
함수를 호출하여 MQTT를 무작위로 생성합니다. 클라이언트 ID. 🎜rrreee🎜MQTT 연결 기능 쓰기🎜
🎜위 매개변수를 사용하여 연결하고,ConnectionSettings
를 통해 연결 매개변수를 설정합니다. 예: 🎜 rrreee🎜메시지 구독🎜🎜🎜
emqx/test
주제를 구독하는 코드를 작성하고 수신된 메시지를 처리하도록 구독에 대한 콜백 함수를 구성합니다. . 여기에서 구독하겠습니다. 획득한 주제와 메시지를 인쇄합니다. 🎜rrreee🎜메시지 게시🎜🎜🎜페이로드를 구성하고
publish
함수를 호출합니다. code>emqx/test 주제가 메시지를 게시한 후 클라이언트는 수신 메시지를 처리하고 대기열을 다시 보내기 위해 폴링 상태로 들어가야 합니다. 🎜rrreee🎜🎜전체 코드🎜🎜🎜서버 연결, 메시지 코드 게시 및 수신. 🎜rrreee🎜🎜Test🎜🎜🎜MQTT 메시지 게시 코드를 실행하면 클라이언트가 성공적으로 연결되었으며 메시지가 하나씩 게시되어 성공적으로 수신되었음을 확인할 수 있습니다. 🎜rrreee🎜🎜🎜🎜🎜Summary🎜🎜🎜At 이제 🎜php-mqtt/client🎜 사용이 완료되었습니다. 클라이언트는 🎜공개 MQTT 서버🎜에 연결하고 테스트 클라이언트와 MQTT 서버 간의 연결, 메시지 게시 및 구독을 구현합니다. 🎜🎜🎜원본 링크: https://www.emqx.com/zh/blog/how-to-use-mqtt-in-php🎜🎜저자: EMQ🎜
추천 학습: "PHP 비디오 튜토리얼"
위 내용은 PHP 프로젝트에서 MQTT를 사용하는 방법을 빠르게 이해하는 기사 1개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!