Swoole と Workerman が選択した PHP と MySQL 間のデータ転送モード
はじめに:
PHP アプリケーションでは、MySQL データベースとのデータ対話は非常に一般的なニーズです。 PHP ネットワーク プログラミングでは、Swoole と Workerman という 2 つの一般的に使用されるオープン ソース フレームワークが、高性能のネットワーク通信機能を提供します。この記事では、PHP と MySQL のデータ送信モードにおける Swoole と Workerman の選択を比較し、具体的なコード例を示します。
1. Swoole
Swoole は高性能の非同期 PHP ネットワーク通信エンジンで、その最下層は C 言語で書かれており、オペレーティング システム カーネルと直接対話できます。従来の PHP ネットワーク プログラミングと比較して、Swoole は同時実行機能が高く、リソース消費が少なくなります。以下は、Swoole を使用して PHP と MySQL 間のデータ送信を実現するためのサンプル コードです:
<?php // 创建一个Swoole的TCP服务器 $server = new SwooleServer('127.0.0.1', 9501); // 监听连接事件 $server->on('Connect', function ($server, $fd) { echo "Client {$fd} connected "; }); // 监听数据接收事件 $server->on('Receive', function ($server, $fd, $fromId, $data) { // 连接MySQL数据库 $conn = new mysqli('localhost', 'root', 'password', 'database'); // 执行SQL查询操作 $result = $conn->query($data); // 处理查询结果 // ... // 返回查询结果 $server->send($fd, $result); // 关闭数据库连接 $conn->close(); }); // 监听关闭连接事件 $server->on('Close', function ($server, $fd) { echo "Client {$fd} closed "; }); // 启动服务器 $server->start();
上記のコードでは、Swoole TCP サーバーを作成し、接続、データ受信、接続の終了という 3 つのイベントをリッスンしました。クライアントが正常に接続すると、Connect
イベントがトリガーされ、クライアントがデータを送信すると、Receive
イベントがトリガーされます。このイベントでは、MySQL データベースに接続し、 SQL クエリを実行する操作; 最後に、クエリ結果をクライアントに返し、データベース接続を閉じます。クライアントが切断されると、Close
イベントがトリガーされます。
2. Workerman
Workerman は、高性能の PHP 非同期ネットワーク通信フレームワークであり、純粋な PHP で書かれており、他の拡張機能に依存する必要はありません。 Workerman は、低遅延と高い同時実行性を特徴として、イベント駆動型の方法でネットワーク リクエストを処理します。以下は、Workerman を使用して PHP と MySQL の間でデータを転送するためのサンプル コードです:
<?php // 引入Workerman的自动加载文件 require_once __DIR__ . '/vendor/autoload.php'; use WorkermanWorker; // 创建一个Worker监听端口,创建MySQL数据库连接 $worker = new Worker('tcp://127.0.0.1:9502'); $worker->onWorkerStart = function ($worker) { // 连接MySQL数据库 $conn = new mysqli('localhost', 'root', 'password', 'database'); $worker->conn = $conn; }; // 客户端连接时触发的事件 $worker->onConnect = function ($connection) use ($worker) { echo "Client {$connection->id} connected "; }; // 客户端发送数据时触发的事件 $worker->onMessage = function ($connection, $data) use ($worker) { // 执行SQL查询操作 $result = $worker->conn->query($data); // 处理查询结果 // ... // 返回查询结果给客户端 $connection->send($result); }; // 客户端断开连接时触发的事件 $worker->onClose = function ($connection) { echo "Client {$connection->id} closed "; }; // 启动Worker Worker::runAll();
上記のサンプル コードでは、Workerman Worker インスタンスを作成し、ポート 9502 をリッスンしました。ワーカーの onWorkerStart
イベントでは、MySQL データベース接続が作成され、ワーカーのライフサイクル全体で使用できます。クライアントが正常に接続すると、onConnect
イベントがトリガーされ、クライアントがデータを送信すると、onMessage
イベントがトリガーされ、MySQL データベースが接続され、SQL クエリ操作が実行されます。最後に、クエリ結果がクライアントに返されます。クライアントが切断されると、onClose
イベントがトリガーされます。
概要:
Swoole と Workerman はどちらも高性能のネットワーク通信機能を提供し、PHP と MySQL 間のデータ転送において非常に優れた役割を果たします。どのフレームワークを選択するかは、プロジェクトのニーズ、開発経験、個人の好みに基づいて選択できます。上記は、Swoole と Workerman が選択した PHP と MySQL のデータ送信モードの紹介です。読者の参考になれば幸いです。
以上がSwoole と Workerman が選択した PHP と MySQL 間のデータ転送モードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。