ホームページ  >  記事  >  PHPフレームワーク  >  Swoole を使用して WebSocket サーバーとデータベースの対話を実装する方法

Swoole を使用して WebSocket サーバーとデータベースの対話を実装する方法

WBOY
WBOYオリジナル
2023-11-07 09:32:281336ブラウズ

Swoole を使用して WebSocket サーバーとデータベースの対話を実装する方法

Swoole を使用して WebSocket サーバーとデータベースの対話を実装する方法

はじめに:
WebSocket は、TCP プロトコルに基づく全二重通信プロトコルです。サーバーとのリアルタイムの双方向通信を確立します。 Swoole は、高性能の非同期および同時プログラミングを簡単に実装できる PHP 拡張機能です。この記事では、Swooleを使用してWebSocketサーバーを構築し、データベースと対話する方法を詳しく紹介します。

ステップ 1: Swoole 拡張機能をインストールする

まず、Swoole 拡張機能をインストールする必要があります。次のコマンドでインストールできます:

pecl install swoole

ステップ 2: WebSocket サーバーの作成

次に、WebSocket サーバーを作成し、指定されたポートをリッスンして、クライアントとの接続を確立します。 。これは、次のコードを使用して実現できます。

<?php
$server = new SwooleWebSocketServer("0.0.0.0", 9501);

$server->on('open', function (SwooleWebSocketServer $server, $request) {
    echo "new connection open: {$request->fd}
";
});

$server->on('message', function (SwooleWebSocketServer $server, $frame) {
    echo "received message: {$frame->data}
";
    
    // 处理数据库交互
    $db = new mysqli('localhost', 'username', 'password', 'database');
    $result = $db->query("SELECT * FROM users");
    while ($row = $result->fetch_assoc()) {
        $server->push($frame->fd, json_encode($row));
    }
    $db->close();
});

$server->on('close', function ($ser, $fd) {
    echo "connection close: {$fd}
";
});

$server->start();
?>

上記のコードでは、WebSocket サーバーを作成し、3 つのイベント コールバック関数を追加します。接続が確立されると、open イベントがトリガーされ、メッセージが受信されると、message イベントがトリガーされ、接続が閉じられると、close イベントがトリガーされます。 message イベントでは、データベースの対話型操作を実行できます。

ステップ 3: データベースと対話する

message イベント コールバック関数では、MySQLi 拡張機能を使用してデータベースと対話します。まず、$db オブジェクトを作成し、mysqli のコンストラクターを使用してデータベースに接続します。次に、クエリ ステートメントを実行し、while ループを通じてクエリ結果をクライアントに送信しました。最後に、データベース接続を閉じます。

セキュリティ上の理由から、データベースの関連情報 (ユーザー名やパスワードなど) を環境変数として設定し、getenv()# を通じてこれらの値を取得する必要があることに注意してください。 ## 関数。コードへの直接の暴露を避けるため。

ステップ 4: サーバーを実行する

最後に、コマンド ラインを使用して上記のコードを実行します。コマンド ラインでコードが配置されているディレクトリに切り替えて、次のコマンドを実行します。

php server.php

すべてがうまくいけば、WebSocket サーバーが正常に起動し、クライアントの接続を待機していることがわかります。クライアントがサーバーに接続すると、

open イベントがトリガーされ、接続 ID がコマンド ラインに表示されます。クライアントからのメッセージを受信すると、message イベントがトリガーされ、受信したメッセージがコマンド ラインに表示されます。接続が閉じられると、close イベントがトリガーされ、接続の終了がコマンド ラインにも表示されます。

概要:

この記事では、Swoole を使用して WebSocket サーバーとデータベース間の対話を実装する方法について詳しく説明します。 WebSocket サーバーを作成し、
message イベント コールバック関数でデータベース インタラクションを実行することで、リアルタイムの双方向通信を実現できます。 Swoole 拡張機能を使用すると、高性能の非同期および同時プログラミングを簡単に実行できます。この記事が、Swoole を使用してデータベースを操作する際に役立つことを願っています。

以上がSwoole を使用して WebSocket サーバーとデータベースの対話を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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