ホームページ >バックエンド開発 >PHPチュートリアル >PHP と MQTT: イベント駆動型のリアルタイム データ分析システムの構築

PHP と MQTT: イベント駆動型のリアルタイム データ分析システムの構築

WBOY
WBOYオリジナル
2023-07-07 21:37:351118ブラウズ

PHP と MQTT: イベント駆動型のリアルタイム データ分析システムの構築

今日のデジタル時代では、リアルタイム データ分析が企業の意思決定とビジネスの最適化の鍵となっています。効率的なリアルタイム データ分析を実現するには、データを収集、処理、保存するための信頼性と柔軟性に優れたシステムが必要です。この記事では、PHP と MQTT (Message Queuing Telemetry Transport) を使用して、イベント駆動型のリアルタイム データ分析システムを構築する方法を紹介します。

  1. MQTT とは
    MQTT は、パブリッシュ/サブスクライブ モデルに基づく軽量のメッセージング プロトコルで、低帯域幅で不安定なネットワーク環境に適しています。 MQTT は、メッセージを 1 つ以上のトピックに送信できる接続指向プロトコルを使用し、サブスクライバーがメッセージを選択的に受信できるようにします。このようなアーキテクチャにより、MQTT はリアルタイム データ分析システムに非常に適しています。
  2. リアルタイム データ分析システムを構築するためのアーキテクチャ
    次のコンポーネントを使用してリアルタイム データ分析システムを構築します。
  3. MQTT プロキシ サーバー: 受信用の MQTT プロキシ サーバーおよびメッセージの転送には、オープンソース ソフトウェア Mosquitto を使用できます。
  4. データ ソース: さまざまなセンサー、デバイス、その他のデータ生成ツールが考えられます。
  5. データ処理: データの受信と処理を担当するサーバー側アプリケーション。PHP を使用して実装されます。
  6. データ ストレージ: データの保存と取得に使用されるデータベース。MySQL またはその他の適切なデータベースの使用を選択できます。
  7. MQTT プロキシ サーバーのインストールと構成
    まず、Mosquitto プロキシ サーバーをインストールする必要があります。 Mosquitto 公式 Web サイトからダウンロードし、指示に従ってインストールできます。インストールが完了したら、ポート番号や認証情報など、プロキシサーバーの接続設定を行う必要があります。
  8. トピックのパブリッシュとサブスクライブ
    PHP では、Eclipse Paho MQTT クライアント ライブラリを使用して MQTT 接続を実装できます。まず、Composer を使用してライブラリをインストールする必要があります。次に、次のコードを使用して、指定されたトピックに接続してメッセージをパブリッシュできます。
<?php

require 'vendor/autoload.php';

use EclipseMosquittoClient as MosquittoClient;

$client = new MosquittoClient();
$client->setCredentials('username', 'password'); // 如果需要认证,添加用户名和密码

$client->onConnect(function () use (&$client) {
    $client->publish('topic', 'Hello from PHP!', 0, false);
    $client->disconnect();
});

$client->onDisconnect(function () {
    echo "Disconnected from MQTT broker.";
});

$client->connect('localhost', 1883, 60);

$client->loopForever();

?>

上記のコードは、最初に require 'vendor を渡します。 /autoload.php ';Paho MQTT クライアント ライブラリを導入し、新しいクライアント インスタンスを作成します。ログイン認証情報は、setCredentials メソッドを使用して設定できます。 onConnect イベント コールバックでは、publish メソッドを使用して、指定されたトピックにメッセージをパブリッシュし、接続を閉じることができます。最後に、connect メソッドを使用して MQTT ブローカー サーバーに接続し、loopForever メソッドを使用して接続を維持します。

トピックをサブスクライブするには、次のコードを使用できます:

<?php

require 'vendor/autoload.php';

use EclipseMosquittoClient as MosquittoClient;

$client = new MosquittoClient();
$client->setCredentials('username', 'password'); // 如果需要认证,添加用户名和密码

$client->onConnect(function () use (&$client) {
    $client->subscribe('topic', 0);
});

$client->onMessage(function ($message) {
    echo "Received message: " . $message->payload . "
";
});

$client->connect('localhost', 1883, 60);

$client->loopForever();

?>

上記のコードは公開コードに似ています。まず、必要なライブラリを導入し、クライアント インスタンスを作成し、認証情報。 onConnect イベント コールバックで、subscribe メソッドを使用して、指定されたトピックをサブスクライブします。 onMessage イベント コールバックでは、受信したメッセージを処理できます。最後に、connect メソッドを使用して MQTT プロキシ サーバーに接続し、接続をアクティブに保ちます。

  1. データの処理とストレージ
    サーバー側では、PHP を使用してデータの処理とストレージのためのロジック コードを作成できます。ニーズに応じて、MySQL またはその他のデータベースにデータを保存し、データベース クエリ ステートメントを作成してデータを取得および分析できます。以下は、PHP を使用して MySQL データベースに接続し、データを挿入する例です。
<?php

$servername = 'localhost';
$username = 'username';
$password = 'password';
$dbname = 'database';

// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);

// 检查连接是否成功
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// 准备SQL语句
$sql = "INSERT INTO data (timestamp, value) VALUES ('" . time() . "', '10.5')";

// 执行SQL语句
if ($conn->query($sql) === TRUE) {
    echo "Data inserted successfully.";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

// 关闭连接
$conn->close();

?>

上記のコードは、まず MySQL 接続を作成し、接続が成功したかどうかを確認します。次に、挿入するデータを含む SQL ステートメントを準備し、実行します。最後に接続を閉じます。

結論:
この記事では、PHP と MQTT を使用してイベント駆動型のリアルタイム データ分析システムを構築する方法を紹介しました。まず、MQTT プロキシ サーバーをインストールして構成し、次に PHP を使用してプロキシ サーバーに接続し、特定のトピックに関するメッセージをパブリッシュまたはサブスクライブします。最後に、PHP を使用してデータ処理と保存のロジック コードを作成し、MySQL データベースにデータを保存する方法を示しました。このようなシステムを使用することで、企業はデータをリアルタイムで監視および分析し、タイムリーな意思決定を行い、ビジネスを最適化することができます。

参考資料:

  • Eclipse Paho MQTT クライアント ライブラリ: https://www.eclipse.org/paho/
  • Mosquitto MQTT プロキシ サーバー: https://www.eclipse.org/paho/
mosquitto.org/documentation/

###注: 上記のコードは参考用です。実際の状況に応じて設定および変更してください。 ###

以上がPHP と MQTT: イベント駆動型のリアルタイム データ分析システムの構築の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。