Current Location: Home> Latest Articles> How to Implement MQTT Protocol Communication in PHP: A Complete Guide with Code Examples

How to Implement MQTT Protocol Communication in PHP: A Complete Guide with Code Examples

M66 2025-07-27

Introduction

As the Internet of Things (IoT) continues to grow, MQTT (Message Queue Telemetry Transport) has become a widely used lightweight communication protocol. It is ideal for low-bandwidth and unstable network environments. This article will explain how to implement MQTT communication in PHP, providing relevant code examples to help you quickly get started with IoT applications.

Installing the MQTT Library

First, we need to install a PHP library that supports the MQTT protocol. In this article, we'll use the "phpMQTT" library, which is an excellent tool for communicating with MQTT servers.

You can install this library using Composer, a PHP dependency management tool. Run the following command in the terminal:

<span class="fun">composer require bluerhinos/phpmqttclient</span>

Connecting and Publishing Messages

Next, let's see how to connect to an MQTT server and publish a message. Below is a simple code example that demonstrates how to connect to an MQTT server using PHP and send a message.

require("phpMQTT.php");

$server = "mqtt.example.com";  // MQTT server address
$port = 1883;  // MQTT server port
$username = "your_username";  // Username
$password = "your_password";  // Password
$client_id = "client_id";  // Client ID
$topic = "your_topic";  // Topic to publish to
$message = "Hello, MQTT!";  // Message content

$mqtt = new phpMQTT($server, $port, $client_id);

if($mqtt->connect(true, NULL, $username, $password)) {
    $mqtt->publish($topic, $message, 0);
    $mqtt->close();
} else {
    echo "Connection failed!";
}

Subscribing to Messages

In addition to publishing messages, we can also subscribe to topics on an MQTT server and receive messages. The following example shows how to subscribe to a topic and process received messages.

require("phpMQTT.php");

$server = "mqtt.example.com";  // MQTT server address
$port = 1883;  // MQTT server port
$username = "your_username";  // Username
$password = "your_password";  // Password
$client_id = "client_id";  // Client ID
$topic = "your_topic";  // Topic to subscribe to

$mqtt = new phpMQTT($server, $port, $client_id);

if($mqtt->connect(true, NULL, $username, $password)) {
    $mqtt->subscribe($topic, 0);
    while($mqtt->proc()) {
        // Process received messages
    }
    $mqtt->close();
} else {
    echo "Connection failed!";
}

Processing Received Messages

In the previous example, we used a callback function to process the messages we subscribed to. Below is a simple function that processes and outputs the received message.

function processMessage($topic, $message) {
    echo "Received message: " . $message . "\n";
}

require("phpMQTT.php");

$server = "mqtt.example.com";  // MQTT server address
$port = 1883;  // MQTT server port
$username = "your_username";  // Username
$password = "your_password";  // Password
$client_id = "client_id";  // Client ID
$topic = "your_topic";  // Topic to subscribe to

$mqtt = new phpMQTT($server, $port, $client_id);
$mqtt->onMessage = "processMessage";  // Set the callback function

if($mqtt->connect(true, NULL, $username, $password)) {
    $mqtt->subscribe($topic, 0);
    while($mqtt->proc()) { }
    $mqtt->close();
} else {
    echo "Connection failed!";
}

Conclusion

This article provided a detailed explanation of how to implement MQTT communication in PHP using the "phpMQTT" library. With the provided code examples for connecting to an MQTT server, publishing messages, subscribing to topics, and processing received messages, you can quickly build your own IoT communication solutions. We hope this guide has been helpful!