Workerman でデータ ストレージに MySQL を使用する方法
Workerman は、高性能の非同期 PHP ソケット フレームワークとして、ネットワーク通信サーバーの開発で広く使用されています。多くの実際のプロジェクトでは、データの保存と管理に MySQL を使用する必要があることがよくあります。以下では、Workerman のデータ ストレージに MySQL を使用する方法を紹介し、具体的なコード例を示します。
1. MySQL 拡張機能をインストールする
始める前に、MySQL 拡張機能がインストールされていることを確認する必要があります。 MySQL 拡張機能は、次のコマンドを使用してインストールできます。
$ pecl install mysql
MySQL 拡張機能がすでにインストールされている場合は、この手順をスキップできます。
2. MySQL 接続を確立する
MySQL をデータ ストレージに使用する前に、まず MySQL との接続を確立する必要があります。 Workerman では、次のコードを通じて MySQL 接続を確立できます:
<?php require_once __DIR__ . '/Workerman/Autoloader.php'; use WorkermanWorker; use WorkermanMySQLConnection; $worker = new Worker(); $worker->onWorkerStart = function() { $GLOBALS['db'] = new Connection('host', 'username', 'password', 'database'); }; Worker::runAll();
上記のコードでは、最初に Workerman フレームワークの Autoloader を導入し、Worker オブジェクトを宣言しました。 Worker オブジェクトの onWorkerStart コールバック関数では、指定されたホスト、ユーザー名、パスワード、データベース名を使用して MySQL 接続を確立します。後続のコードで使用できるように、接続オブジェクトをグローバル変数 $GLOBALS['db']
に保存します。
3. SQL クエリ ステートメントの実行MySQL 接続を確立した後、MySQL 接続オブジェクトを使用して SQL クエリ ステートメントを実行できます。以下は簡単な例です。
<?php use WorkermanWorker; use WorkermanMySQLConnection; $worker = new Worker(); $worker->onWorkerStart = function() { $GLOBALS['db'] = new Connection('host', 'username', 'password', 'database'); }; $worker->onMessage = function($connection, $data) { $res = $GLOBALS['db']->query('SELECT * FROM users'); if (!$res) { $connection->send('查询失败'); } else { $connection->send(json_encode($res)); } }; Worker::runAll();
上記のコードでは、Worker オブジェクトの onMessage コールバック関数でクエリ ステートメントを実行し、users という名前のテーブル内のすべてのデータをクエリしました。クエリが失敗した場合は、「Query failed」が返されます。それ以外の場合、クエリ結果は json_encode 関数を使用してシリアル化され、クライアントに送信されます。
これは単なる例であり、実際のアプリケーションでは、挿入、更新、削除などの操作など、特定のニーズに応じてさまざまな SQL ステートメントを実行できます。
4. 接続プールの最適化
同時実行性の高いネットワーク アプリケーションでは、データベース接続を最適化するために接続プールがよく使用されます。 Workerman フレームワークは、MySQL 接続を効果的に管理および再利用できる MySQL 接続プーリングのサポートを提供します。
次は、接続プールを使用するサンプル コードです。
<?php use WorkermanWorker; use WorkermanMySQLConnection; $worker = new Worker(); $worker->onWorkerStart = function() { $GLOBALS['db'] = new WorkermanMySQLPool('host', 'username', 'password', 'database'); }; $worker->onMessage = function($connection, $data) { $GLOBALS['db']->pop(function($db) use ($connection) { $res = $db->query('SELECT * FROM users'); if (!$res) { $connection->send('查询失败'); } else { $connection->send(json_encode($res)); } $db->push($db); }); }; Worker::runAll();
上記のコードでは、Workerman フレームワークによって提供される接続プール クラス
WorkermanMySQLPool を使用して、接続プールオブジェクト。 onMessage コールバック関数で、$GLOBALS['db']->pop
メソッドを使用して接続プールから接続を取得し、クエリ操作を実行します。最後に、$db->push
メソッドを使用して、他のリクエストで使用できるように接続を接続プールに返します。 5. 概要
この記事では、Workerman のデータ ストレージに MySQL を使用する方法を学びました。まず、pecl install mysql コマンドを使用して MySQL 拡張機能をインストールし、次に MySQL との接続を確立して、SQL クエリ ステートメントを実行する必要があります。同時実行性が高い場合は、接続プールを使用してデータベース接続を最適化することもできます。この記事があなたのお役に立てば幸いです。また、Workerman を使用してネットワーク アプリケーションを開発する際に、データの保存がスムーズになることを願っています。
以上がWorkerman のデータ ストレージに MySQL を使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。