현재 위치: > 최신 기사 목록> PHP를 기반으로 한 MQTT 프로토콜 구현에 대한 튜토리얼

PHP를 기반으로 한 MQTT 프로토콜 구현에 대한 튜토리얼

M66 2025-06-30

소개

사물 인터넷 (IoT)은 다양한 센서, 컨트롤러 및 스마트 장치를 통해 장치 간의 상호 연결을 가능하게합니다. MQTT (메시지 대기열 원격 측정 전송)는 가볍고 효율적인 통신 프로토콜이며 사물 인터넷 환경에서 널리 사용됩니다. 이 기사는 PHP 프로그래밍 언어를 사용하여 MQTT 프로토콜을 통해 IoT 통신을 구현하는 방법을 보여줍니다.

1 단계 : MQTT 클라이언트를 설치하십시오

먼저 PHP 용 MQTT 클라이언트 확장을 설치해야합니다. Eclipse/Mosquitto-PHP 확장을 사용하는 것이 좋습니다. 다음 명령을 통해 설치할 수 있습니다.

 <span class="fun">작곡가에는 일식/모기 -php가 필요합니다</span>

2 단계 : MQTT 서버에 연결하십시오

MQTT 서버에 연결하기 전에 MQTT 서버의 주소, 포트, 사용자 이름 및 비밀번호를 얻어야합니다. 다른 MQTT 서비스 제공 업체마다 다른 구성 방법이있을 수 있습니다.

 <?php
require_once 'vendor/autoload.php'; //짐MQTT클라이언트 라이브러리
$mqtt = new MosquittoClient();
$mqtt->setCredentials('username', 'password'); // 사용자 이름과 비밀번호를 설정합니다
$mqtt->onConnect(function() use ($mqtt) {
    echo 'Connected to MQTT broker';
    $mqtt->subscribe('topic', 0); //주제를 구독하십시오
});
$mqtt->connect('mqtt.example.com', 1883, 60); // 연결하다MQTT섬기는 사람
$mqtt->loopForever();
?>

3 단계 : 메시지 보내기 및 수신

연결이 성공하면 MQTT 메시지를 보내고받을 수 있습니다. 다음은 특정 주제로 메시지를 보내고 해당 주제에서 메시지를받는 방법을 보여주는 샘플 코드입니다.

 <?php
require_once 'vendor/autoload.php';
$mqtt = new MosquittoClient();
$mqtt->setCredentials('username', 'password');
$mqtt->onConnect(function() use ($mqtt) {
    echo 'Connected to MQTT broker';
    $mqtt->subscribe('topic', 0); //주제를 구독하십시오
    $mqtt->publish('topic', 'Hello, MQTT!', 0); // 메시지를 보내십시오
});
$mqtt->onMessage(function($message) {
    echo 'Received message: ' . $message->payload;
});
$mqtt->connect('mqtt.example.com', 1883, 60);
$mqtt->loopForever();
?>

4 단계 : 수신 된 메시지를 처리하십시오

수신 된 메시지는 OnMessage 콜백 함수를 등록하여 처리됩니다. 메시지를 데이터베이스에 저장하거나 다른 장치로 전달하는 것과 같은 요구 사항에 따라 다양한 작업을 수행 할 수 있습니다.

 <?php
$mqtt->onMessage(function($message) {
    echo 'Received message: ' . $message->payload;
    // 수신 된 메시지를 처리하십시오,예를 들어, 데이터베이스에 저장하십시오
    // ...
});
?>

요약

위의 단계를 통해 개발자는 PHP를 사용하여 MQTT 프로토콜을 기반으로 IoT 통신을 쉽게 구현할 수 있습니다. MQTT 프로토콜은 대역폭이 낮고 불안정한 네트워크가있는 IoT 애플리케이션 시나리오에 특히 적합합니다. 그러나 보안은 연결에주의를 기울여 연결의 보안 및 메시지의 보안 전송을 보장하는 데 중요한 문제로 남아 있습니다.