To connect PHP to a managed MQTT broker, install the php-mqtt/client library, use the endpoint and credentials supplied by your broker deployment, configure TLS, then connect and run the client loop to receive messages and process acknowledgements. This guide uses EMQX Cloud Serverless as its concrete example; its hostname, username, password, and CA certificate must come from your own deployment.
What you need to connect
An MQTT connection has five pieces: a PHP application, an MQTT client library, a broker endpoint, a client identity, and one or more topic names. The library handles the MQTT protocol; the broker routes messages between clients that publish to or subscribe to matching topics.
- Broker endpoint: the deployment’s hostname and supported port.
- Client identity: a client ID that is unique among clients connected to that deployment.
- Authentication and transport: credentials and TLS settings required by the broker.
- Topics and payloads: the topic strings your application uses to publish and subscribe.
Do not substitute generic values for a provider’s endpoint settings. Managed brokers can differ in hostname, authentication method, certificate authority, ports, and protocol support.
Install the PHP MQTT client
From your PHP project directory, install the library with Composer:
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
#1 Best Overall
- Read Before You Buy — No Video Output: These adapters support charging and USB 2.0 data transfer, but cannot transmit video signals. Except for standard USB webcams (which use USB data only), they are not compatible with HDMI/DisplayPort cables, video-capable USB-C hubs, or docking stations with video output.
- Convert USB-A Ports to USB-C: Designed to connect USB-C earphones, cables, flash drives, card readers, and other USB-C accessories to standard USB-A ports. Plug-and-play with no drivers or software required.
- Aluminum Alloy Housing: Built with a sturdy aluminum alloy shell that aids in heat dissipation and protects against daily wear and scratches. Designed to maintain a stable and secure connection.
- Compact & Travel-Friendly: The ultra-compact design allows the adapter to stay plugged into your device without blocking adjacent ports or adding bulk, reducing wear and tear on your original USB ports.
- 12-Month Warranty: Backed by a 12-month manufacturer warranty for peace of mind. Designed to meet strict quality control standards for reliable everyday performance.
composer require php-mqtt/client
The php-mqtt/client documentation describes its API for connecting, publishing, subscribing, and processing messages. EMQ’s walkthrough uses MQTT 3.1.1 with this library.
Get the connection details from EMQX Cloud
Create or select an EMQX Cloud Serverless deployment and copy its actual connection hostname. Configure username-and-password authentication for that deployment and save the credentials securely. EMQX’s current deployment connection instructions specify TLS for Serverless connections, port 8883, and a CA certificate downloaded for the deployment.
Rank #2
- 5-in-1 USB-C Hub: Experience comprehensive connectivity featuring a Power Delivery input, two USB-A 2.0 ports, a USB-A 3.0 port, and an HDMI port. (Note: The USB-C power delivery input port is only for connecting an external wall charger to power your laptop and cannot power peripheral devices.)
- 90W Pass-Through Charging: Achieve optimal charging with 90W pass-through power to your laptop, supported by a total input of 100W, with the hub reserving 10W for operational efficiency. (Note: Wall charger not included.)
- Quick Data Transfers: Accelerate your productivity with rapid data transfers using a high-speed 5Gbps USB 3.0 port and two 480Mbps USB 2.0 ports.
- 4K HDMI Display: Enhance your visual experience with a hub capable of delivering 4K resolution at 30Hz in both mirror and extend modes. Please note that this hub is compatible with MacBook (macOS 12 and newer), Windows 10 and 11, ChromeOS, and laptops equipped with DP Alt Mode and Power Delivery. Note: This device is not compatible with Linux.
- What You Get: Anker USB-C Hub (5-in-1, 4K HDMI), welcome guide, 18-month warranty, and our friendly customer service.
Use the downloaded CA certificate to verify the broker’s TLS certificate. Do not disable certificate validation as a shortcut: a connection without proper verification does not provide the intended protection against an impersonated endpoint.
Connect, subscribe, and publish
The following illustrates the shape of a PHP client using deployment-specific values. The hostname, credentials, CA path, and topic are examples or environment-provided settings—not working credentials. Replace them with values for your own deployment.
Do these 3 things before closing this tab:
1Scan for outdated or missing drivers - takes under a minute2Clear out junk files and repair common Windows errors3Fix the driver behind crashes, sound loss and screen glitchesRank #3
- Sleek 7-in-1 USB-C Hub: Features an HDMI port, two USB-A 3.0 ports, and a USB-C data port, each providing 5Gbps transfer speeds. It also includes a USB-C PD input port for charging up to 100W and dual SD and TF card slots, all in a compact design.
- Flawless 4K@60Hz Video with HDMI: Delivers exceptional clarity and smoothness with its 4K@60Hz HDMI port, making it ideal for high-definition presentations and entertainment. (Note: Only the HDMI port supports video projection; the USB-C port is for data transfer only.)
- Double Up on Efficiency: The two USB-A 3.0 ports and a USB-C port support a fast 5Gbps data rate, significantly boosting your transfer speeds and improving productivity.
- Fast and Reliable 85W Charging: Offers high-capacity, speedy charging for laptops up to 85W, so you spend less time tethered to an outlet and more time being productive.
- What You Get: Anker USB-C Hub (7-in-1), welcome guide, 18-month warranty, and our friendly customer service.
<?php
require __DIR__ . '/vendor/autoload.php';
use PhpMqttClientMqttClient;
use PhpMqttClientConnectionSettings;
$host = getenv('MQTT_HOST');
$username = getenv('MQTT_USERNAME');
$password = getenv('MQTT_PASSWORD');
$caFile = getenv('MQTT_CA_FILE');
$clientId = getenv('MQTT_CLIENT_ID');
if (!$host || !$username || !$password || !$caFile || !$clientId) {
throw new RuntimeException('Set the MQTT deployment settings before connecting.');
}
$client = new MqttClient($host, 8883, $clientId);
$settings = (new ConnectionSettings())
->setUsername($username)
->setPassword($password)
->setKeepAliveInterval(60)
->setConnectTimeout(10)
->setUseTls(true)
->setTlsVerifyPeer(true)
->setTlsCertificateAuthorityFile($caFile);
$client->connect($settings, true);
$client->subscribe('devices/example/status', function (string $topic, string $message) {
echo "Received on {$topic}: {$message}" . PHP_EOL;
}, 1);
$client->publish('devices/example/status', json_encode([
'state' => 'online',
'sent_at' => gmdate(DATE_ATOM),
]), 1);
// Keep processing incoming packets and QoS acknowledgements.
$client->loop(true);
Use the exact TLS configuration supported by your installed library version and the CA file supplied for your deployment. EMQ’s PHP walkthrough shows how its connection settings carry authentication, keepalive, timeout, and TLS options before connect(); the example values must be replaced with your deployment’s details.
Why the loop matters
A subscription callback is invoked when the client processes a broker message; subscribing alone does not continuously read messages from the network. The library documentation explains that the client loop reads and handles broker packets. It also processes QoS 1 and QoS 2 publication acknowledgements, so a workflow that publishes at those levels must continue running the loop long enough to process them.
Rank #4
- Dual Converters, Infinite Potential:Includes 2× USB C male to USB A female adapters and 2× USB A male to USB C female adapters. Perfect for a wide range of uses—tablets with Bluetooth keyboards, expand USB ports on macbook, and more. Two different converters for all your daily needs
- Next-Level 10Gbps & 3A Charging: No more slow 480Mbps, this usb to usb c adapter has a transfer speed of up to 10Gbps, allowing you to do more transferring in less time. This usb adapter fits both USB A and USB C charger, supporting up to 3A fast charging
- Upgraded Exquisite Craftsmanship: With an aluminum alloy housing and metal connector, the usbc to usb adapter is extremely durable and sturdy. Rigorously tested to withstand more than 10,000 times of plugging and unplugging, ensuring long-lasting performance
- Broad Compatible: The usb c to usb adapter widely supports all USB C/ USB A devices like laptops, tablets, cellphones, car chargers, and phone chargers. Such as compatible with MacBook Pro/Air 2023/2022, Thunderbolt 4/3 Devices,Apple MagSafe Watch 9/8/7/SE/Ultra, iPad Pro 2022/2021, Samsung Galaxy S23/S20/S10, and iPhone 17/16/15 Pro. Plug and play
- Please Note: To reach 10Gbps speed, keep the cable under 3.3 ft. For USB A Male to USB C adapters, try flipping the USB C connector. USB C Male to USB A adapters support bidirectional 10Gbps transfer within 3.3 ft
Choose a client ID deliberately
Use a stable, unique ID strategy appropriate to the application, such as a persistent identifier per device or a distinct identifier for each worker. Avoid assigning the same ID to concurrent clients: MQTT brokers commonly treat a new connection using an existing client ID as a replacement for the earlier connection.
Make the connection safe and operational
- Keep secrets out of source control. Supply the username and password through environment variables or a secrets manager, and restrict access to them.
- Verify the broker certificate. Use the deployment’s CA certificate and the provider’s supported verification settings. Do not copy permissive self-signed-certificate settings from a sample without confirming they are appropriate for your actual certificate chain.
- Match process lifetime to the job. A subscriber needs a process that stays alive and runs the MQTT loop. A short-lived PHP web request may end before messages arrive; use a long-running worker or another suitable process manager for continuous subscriptions.
- Handle reconnects and shutdowns. Production workers should detect connection failures, reconnect using the deployment’s current settings, and close connections cleanly when stopping.
EMQX Serverless and AWS IoT Core are not interchangeable
The PHP MQTT library provides a general MQTT client API, but the transport and authentication setup depends on the broker. EMQX Cloud Serverless documents TLS on port 8883, a deployment CA certificate, and deployment-configured username/password authentication. AWS IoT Core has separate endpoint, authentication, and protocol requirements.
Best Value
- 5-in-1 Connectivity: Equipped with a 4K HDMI port, a 5 Gbps USB-C data port, two 5 Gbps USB-A ports, and a USB C 100W PD-IN port. Note: The USB C 100W PD-IN port supports only charging and does not support data transfer devices such as headphones or speakers.
- Powerful Pass-Through Charging: Supports up to 85W pass-through charging so you can power up your laptop while you use the hub. Note: Pass-through charging requires a charger (not included). Note: To achieve full power for iPad, we recommend using a 45W wall charger.
- Transfer Files in Seconds: Move files to and from your laptop at speeds of up to 5 Gbps via the USB-C and USB-A data ports. Note: The USB C 5Gbps Data port does not support video output.
- HD Display: Connect to the HDMI port to stream or mirror content to an external monitor in resolutions of up to 4K@30Hz. Note: The USB-C ports do not support video output.
- What You Get: Anker 332 USB-C Hub (5-in-1), welcome guide, our worry-free 18-month warranty, and friendly customer service.
| Connection consideration | EMQX Cloud Serverless | AWS IoT Core |
|---|---|---|
| Transport and endpoint | TLS is required; the documented TLS port is 8883. Use the hostname and CA certificate for your deployment, per EMQX’s instructions. |
Supports MQTT and MQTT over secure WebSockets. Protocols, ports, authentication, and ALPN requirements vary; follow the AWS protocol and port documentation. |
| Authentication and security | Configure deployment username/password authentication and TLS using the deployment’s certificate details. | Authentication depends on the chosen protocol and port. AWS says custom non-SDK clients must meet its security requirements, including sending SNI; connections without SNI are refused. See AWS IoT Core MQTT documentation. |
| Client guidance | A general MQTT client such as php-mqtt/client can be configured with the deployment’s connection settings. |
AWS recommends its Device SDKs. A generic PHP client requires deliberate configuration for AWS’s endpoint security and authentication rules. |
| QoS support | Use the QoS levels supported by your selected deployment and client configuration. | AWS IoT supports QoS 0 and 1, not QoS 2. Wait for CONNACK before sending additional control packets or disconnecting, as described in the AWS MQTT guidance. |
For AWS IoT, select a supported authentication-and-port combination from its protocol documentation rather than assuming EMQX’s TLS settings will work unchanged.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

