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()# を通じてこれらの値を取得する必要があることに注意してください。 ## 関数。コードへの直接の暴露を避けるため。
php server.php
open イベントがトリガーされ、接続 ID がコマンド ラインに表示されます。クライアントからのメッセージを受信すると、
message イベントがトリガーされ、受信したメッセージがコマンド ラインに表示されます。接続が閉じられると、
close イベントがトリガーされ、接続の終了がコマンド ラインにも表示されます。
この記事では、Swoole を使用して WebSocket サーバーとデータベース間の対話を実装する方法について詳しく説明します。 WebSocket サーバーを作成し、
message イベント コールバック関数でデータベース インタラクションを実行することで、リアルタイムの双方向通信を実現できます。 Swoole 拡張機能を使用すると、高性能の非同期および同時プログラミングを簡単に実行できます。この記事が、Swoole を使用してデータベースを操作する際に役立つことを願っています。
以上がSwoole を使用して WebSocket サーバーとデータベースの対話を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。