PHP 기반 MQTT 통신 라이브러리 활용 가이드

PHP 환경에서 MQTT 브로커와 효율적으로 통신할 수 있는 경량 라이브러리를 소개합니다. IoT 환경에서 실시간 데이터 교환이 필요한 경우 유용하게 활용할 수 있습니다.

라이브러리 개요

해당 라이브러리는 MQTT 프로토콜을 순수 PHP로 구현한 클라이언트 도구입니다. 별도의 확장 모듈 설치 없이 PHP 7.0 이상 환경에서 즉시 사용 가능하며, 주요 MQTT 기능을 모두 지원합니다.

핵심 기능

  • 토픽 구독: 특정 토픽 패턴을 감시하여 메시지 수신
  • 메시지 발행: 지정한 토픽으로 데이터 전송
  • 연결 유지: 장시간 지속적인 세션 관리
  • QoS 레벨: 0, 1, 2 단계의 메시지 전송 보장 수준 지원

기술적 특징

  • 직관적인 인터페이스 설계로 학습 곡선 최소화
  • Linux, Windows, macOS 등 다양한 운영체제 호환
  • 외부 의존성 없이 독립 실행 가능
  • 사용자 정의 콜백 등록으로 유연한 메시지 처리
  • PSR-2/PSR-4 표준 준수로 코드 품질 보장

설치 및 기본 사용법

의존성 설치

composer require tokudu/php-mqtt-client

클라이언트 인스턴스 생성

<?php
require_once 'vendor/autoload.php';

use Tokudu\PhpMqttClient\Client;

$brokerUrl = 'tcp://broker.hivemq.com:1883';
$mqtt = new Client($brokerUrl);
?>

브로커 연결

<?php
try {
    $mqtt->connect();
} catch (Exception $err) {
    error_log("연결 실패: " . $err->getMessage());
    exit(1);
}
?>

메시지 발행 예제

<?php
$targetTopic = 'factory/sensors/temperature';
$payload = json_encode([
    'device_id' => 'TH-001',
    'value' => 23.5,
    'unit' => 'celsius',
    'timestamp' => time()
]);

$mqtt->publish($targetTopic, $payload, 1);
?>

토픽 구독 및 수신 처리

<?php
$subscriptionTopic = 'factory/sensors/#';

$mqtt->subscribe($subscriptionTopic, function ($receivedTopic, $data) {
    $decoded = json_decode($data, true);
    printf("[%s] %s: %.1f%s\n", 
        date('Y-m-d H:i:s'),
        $decoded['device_id'] ?? 'unknown',
        $decoded['value'] ?? 0,
        $decoded['unit'] ?? ''
    );
});

// 메시지 루프 실행 (비동기 수신 대기)
$mqtt->loop();
?>

연결 종료

<?php
$mqtt->disconnect();
?>

실전 활용 시나리오

스마트 팩토리 환경에서 센서 데이터 수집, 홈 자동화 시스템의 상태 모니터링, 위치 기반 서비스의 실시간 추적 등 다양한 분야에서 적용할 수 있습니다. 특히 기존 PHP 기반 웹 인프라와 IoT 장치 간의 브리지 역할로 활용하면 효과적입니다.

태그: MQTT PHP IoT Composer Message Queue

5월 25일 03:54에 게시됨