PHP 프로젝트에서 MQTT를 사용하는 방법을 빠르게 이해하는 기사 1개
PHP는 널리 사용되는 오픈 소스 다목적 스크립팅 언어로 HTML에 포함될 수 있으며 특히 웹 개발에 적합합니다.
이 글에서는 주로 PHP 프로젝트에서 php-mqtt/client
클라이언트 라이브러리를 사용하여 php-mqtt/client 客户端库 ,实现 MQTT 客户端与 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 客户端库如下:
- workerman/mqtt:Asynchronous MQTT client for PHP based on workerman.
- simps/mqtt:MQTT Protocol Analysis and Coroutine Client for PHP.
项目初始化
确认 PHP 版本
本项目使用 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-mqtt/client 客户端
Composer 是 PHP 的一个依赖管理工具,它能管理你的 PHP 项目所需要的所有依赖关系。
composer require php-mqtt/client
PHP MQTT 使用
连接 MQTT 服务器
本文将使用 EMQ X 提供的 免费公共 MQTT 服务器,该服务基于 EMQ X 的 MQTT 物联网云平台 创建。服务器接入信息如下:
- Broker: broker-cn.emqx.io
- TCP Port: 1883
- SSL/TLS Port: 8883
导入 composer autoload 文件和 php-mqtt/client
require('vendor/autoload.php'); use \PhpMqtt\Client\MqttClient;
设置 MQTT Broker 连接参数
设置 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;
编写 MQTT 连接函数
使用上述的参数进行连接,通过 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 서버
MQTT 클라이언트 라이브러리 선택
이 문서에서는 Composer에서 가장 많이 다운로드된 php-mqtt/client
클라이언트 라이브러리를 선택합니다. PHP-MQTT 클라이언트 라이브러리는 Packagist - Search MQTT
php-mqtt/client에 대한 자세한 사용 문서는 를 참조하세요. 패키지스트 PHP -mqtt/client.
MQTT 통신은 HTTP 시스템 외부의 네트워크 통신 시나리오입니다. PHP 기능의 한계로 인해 PHP 시스템에서 Swoole/Workerman과 같이 네트워크 통신용으로 특별히 설계된 확장을 사용하면 더 나은 경험을 제공할 수 있습니다. 관련 MQTT 클라이언트 라이브러리는 다음과 같습니다.
프로젝트 초기화PHP 버전 확인
이 프로젝트는 개발 및 테스트용으로 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-mqtt/client 클라이언트 설치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 브로커 연결 주소, 포트 및 주제를 설정하는 동시에 PHP rand
함수를 호출하여 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!
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 브로커 연결 주소, 포트 및 주제를 설정하는 동시에 PHP rand
함수를 호출하여 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 pubsub_tcp.php
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

PHP와 Python은 각각 고유 한 장점이 있으며 선택은 프로젝트 요구 사항을 기반으로해야합니다. 1.PHP는 간단한 구문과 높은 실행 효율로 웹 개발에 적합합니다. 2. Python은 간결한 구문 및 풍부한 라이브러리를 갖춘 데이터 과학 및 기계 학습에 적합합니다.

PHP는 서버 측에서 널리 사용되는 스크립팅 언어이며 특히 웹 개발에 적합합니다. 1.PHP는 HTML을 포함하고 HTTP 요청 및 응답을 처리 할 수 있으며 다양한 데이터베이스를 지원할 수 있습니다. 2.PHP는 강력한 커뮤니티 지원 및 오픈 소스 리소스를 통해 동적 웹 컨텐츠, 프로세스 양식 데이터, 액세스 데이터베이스 등을 생성하는 데 사용됩니다. 3. PHP는 해석 된 언어이며, 실행 프로세스에는 어휘 분석, 문법 분석, 편집 및 실행이 포함됩니다. 4. PHP는 사용자 등록 시스템과 같은 고급 응용 프로그램을 위해 MySQL과 결합 할 수 있습니다. 5. PHP를 디버깅 할 때 error_reporting () 및 var_dump ()와 같은 함수를 사용할 수 있습니다. 6. 캐싱 메커니즘을 사용하여 PHP 코드를 최적화하고 데이터베이스 쿼리를 최적화하며 내장 기능을 사용하십시오. 7

PHP와 Python은 각각 고유 한 장점이 있으며 프로젝트 요구 사항에 따라 선택합니다. 1.PHP는 웹 개발, 특히 웹 사이트의 빠른 개발 및 유지 보수에 적합합니다. 2. Python은 간결한 구문을 가진 데이터 과학, 기계 학습 및 인공 지능에 적합하며 초보자에게 적합합니다.

PHP는 전자 상거래, 컨텐츠 관리 시스템 및 API 개발에 널리 사용됩니다. 1) 전자 상거래 : 쇼핑 카트 기능 및 지불 처리에 사용됩니다. 2) 컨텐츠 관리 시스템 : 동적 컨텐츠 생성 및 사용자 관리에 사용됩니다. 3) API 개발 : 편안한 API 개발 및 API 보안에 사용됩니다. 성능 최적화 및 모범 사례를 통해 PHP 애플리케이션의 효율성과 유지 보수 성이 향상됩니다.

PHP는 여전히 역동적이며 현대 프로그래밍 분야에서 여전히 중요한 위치를 차지하고 있습니다. 1) PHP의 단순성과 강력한 커뮤니티 지원으로 인해 웹 개발에 널리 사용됩니다. 2) 유연성과 안정성은 웹 양식, 데이터베이스 작업 및 파일 처리를 처리하는 데 탁월합니다. 3) PHP는 지속적으로 발전하고 최적화하며 초보자 및 숙련 된 개발자에게 적합합니다.

PHP는 주로 절차 적 프로그래밍이지만 객체 지향 프로그래밍 (OOP)도 지원합니다. Python은 OOP, 기능 및 절차 프로그래밍을 포함한 다양한 패러다임을 지원합니다. PHP는 웹 개발에 적합하며 Python은 데이터 분석 및 기계 학습과 같은 다양한 응용 프로그램에 적합합니다.

PHP와 Python은 고유 한 장점과 단점이 있으며 선택은 프로젝트 요구와 개인 선호도에 달려 있습니다. 1.PHP는 대규모 웹 애플리케이션의 빠른 개발 및 유지 보수에 적합합니다. 2. Python은 데이터 과학 및 기계 학습 분야를 지배합니다.

PHP는 특히 빠른 개발 및 동적 컨텐츠를 처리하는 데 웹 개발에 적합하지만 데이터 과학 및 엔터프라이즈 수준의 애플리케이션에는 적합하지 않습니다. Python과 비교할 때 PHP는 웹 개발에 더 많은 장점이 있지만 데이터 과학 분야에서는 Python만큼 좋지 않습니다. Java와 비교할 때 PHP는 엔터프라이즈 레벨 애플리케이션에서 더 나빠지지만 웹 개발에서는 더 유연합니다. JavaScript와 비교할 때 PHP는 백엔드 개발에서 더 간결하지만 프론트 엔드 개발에서는 JavaScript만큼 좋지 않습니다.
