#PHP は、広く使用されているオープンソースの多目的スクリプト言語で、HTML に埋め込むことができ、特に Web 開発に適しています。
この記事では主に、PHP プロジェクトで php-mqtt/client
クライアント ライブラリを使用して 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 クライアント ライブラリは次のとおりです。
このプロジェクトでは開発とテストに 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 プロジェクトの関係に必要なすべての依存関係を管理できる PHP の依存関係管理ツールです。 。
composer require php-mqtt/client
MQTT IoT クラウド プラットフォーム に基づいて作成されています。サーバーのアクセス情報は次のとおりです。 ブローカー:
broker-cn.emqx.iorequire('vendor/autoload.php'); use \PhpMqtt\Client\MqttClient;## をインポートします。 # settings MQTT ブローカー接続パラメーター
$server = 'broker-cn.emqx.io'; $port = 1883; $clientId = rand(5, 15); $username = 'emqx_user'; $password = null; $clean_session = false;
MQTT 接続関数を作成します
$connectionSettings = new ConnectionSettings();$connectionSettings ->setUsername($username) ->setPassword(null) ->setKeepAliveInterval(60) // Last Will 设置 ->setLastWillTopic('emqx/test/last-will') ->setLastWillMessage('client disconnect') ->setLastWillQualityOfService(1);复制代码)
メッセージのサブスクライブ
// 订阅 $mqtt->subscribe('emqx/test', function ($topic, $message) { printf("Received message on topic [%s]: %s\n", $topic, $message); }, 0);
Publish message
トピックにメッセージをパブリッシュします。パブリッシュが完了したら、クライアントはポーリング状態に入り、受信メッセージを処理してキューを再送信する必要があります: <pre class="brush:php;toolbar:false;">for ($i = 0; $i< 10; $i++) {
$payload = array(
&#39;protocol&#39; => &#39;tcp&#39;,
&#39;date&#39; => date(&#39;Y-m-d H:i:s&#39;),
&#39;url&#39; => &#39;https://github.com/emqx/MQTT-Client-Examples&#39;
);
$mqtt->publish(
// topic
&#39;emqx/test&#39;,
// payload
json_encode($payload),
// qos
0,
// retain
true
);
printf("msg $i send\n");
sleep(1);
}
// 客户端轮询以处理传入消息和重发队列
$mqtt->loop(true);</pre>
Full code
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 pubsub_tcp.php
概要
に接続し、テスト クライアントと MQTT サーバー間の接続、メッセージ パブリッシュ、およびサブスクリプションを実装します。 元のリンク: https://www.emqx.com/zh/blog/how-to-use-mqtt-in-php
著者: EMQ推奨学習: 「PHP ビデオ チュートリアル 」
以上がPHP プロジェクトで MQTT を使用する方法をすぐに理解するための 1 つの記事の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。