Swoole と Workerman は 2 つの非常に人気のある PHP 拡張機能で、どちらも高性能のネットワーク通信とメッセージ プッシュ機能を実現できます。 PHP や MySQL でメッセージをプッシュする場合、リアルタイム性と信頼性が重要な要素になります。この記事では、Swoole と Workerman を使用してリアルタイム メッセージ プッシュを実装する方法と、具体的なコード例を紹介します。
1. Swoole のメッセージ プッシュ
Swoole は、オープンソースの高性能 PHP ネットワーク通信エンジンです。 PHP 拡張機能をベースにしており、非同期 IO、コルーチン、マルチプロセスなどの機能を提供し、リアルタイムのメッセージ プッシュを簡単に実現できます。以下は、Swoole を使用してリアルタイム メッセージ プッシュを実装するコード例です。
<?php // 创建WebSocket服务器 $server = new SwooleWebSocketServer('0.0.0.0', 9501); // 监听WebSocket连接打开事件 $server->on('open', function (SwooleWebSocketServer $server, $request) { echo "connection open: {$request->fd} "; }); // 监听WebSocket消息事件 $server->on('message', function (SwooleWebSocketServer $server, $frame) { echo "received message: {$frame->data} "; // 在此处处理消息推送逻辑,比如将消息写入MySQL数据库 // 广播消息给所有连接的客户端 foreach ($server->connections as $fd) { $server->push($fd, $frame->data); } }); // 监听WebSocket连接关闭事件 $server->on('close', function ($ser, $fd) { echo "connection close: {$fd} "; }); // 启动服务器 $server->start(); ?>
上記のコードでは、WebSocket サーバーを作成し、接続の開始イベント、メッセージ イベント、および終了イベントをリッスンしました。メッセージを受信したら、メッセージ プッシュ ロジックを処理できます。ここでは、接続されているすべてのクライアントにメッセージをブロードキャストするだけですが、実際のニーズに応じてより複雑な処理を実行できます。
2. Workerman のメッセージ プッシュ
Workerman は、別の高性能 PHP ネットワーク通信エンジンであり、マルチプロセス方式でリアルタイムのメッセージ プッシュ機能を提供します。以下は、Workerman を使用してリアルタイム メッセージ プッシュを実装するコード例です:
<?php // 引入Workerman的自动加载文件 require_once __DIR__ . '/vendor/autoload.php'; use WorkermanWorker; // 创建一个Worker监听9501端口,使用WebSocket协议通信 $ws_worker = new Worker("websocket://0.0.0.0:9501"); // 启动4个进程对外提供服务 $ws_worker->count = 4; // 监听WebSocket连接打开事件 $ws_worker->onConnect = function ($connection) { echo "new connection "; }; // 监听WebSocket消息事件 $ws_worker->onMessage = function ($connection, $data) { echo "received message: {$data} "; // 在此处处理消息推送逻辑,比如将消息写入MySQL数据库 // 广播消息给所有连接的客户端 foreach ($connection->worker->connections as $client_connection) { $client_connection->send($data); } }; // 启动Worker Worker::runAll(); ?>
Workerman のコードは Swoole のコードに非常に似ています。また、WebSocket サーバーを作成し、接続の開始とメッセージ イベントをリッスンしました。メッセージが受信されると、そこでメッセージ プッシュ ロジックを処理し、接続されているすべてのクライアントにメッセージをブロードキャストできます。
3. Swoole と Workerman の比較
Swoole と Workerman はどちらも非常に優れた PHP 拡張機能であり、両方ともリアルタイム メッセージ プッシュの機能を実現できます。これらの長所と短所は主に次の側面に反映されます:
Swoole と Workerman のどちらを使用するかを選択する場合は、実際のニーズとプロジェクトの状況に基づいて決定する必要があります。どの拡張機能を選択しても、PHP および MySQL でリアルタイム メッセージ プッシュを実装し、高性能で信頼性の高いネットワーク通信を提供できます。この記事が皆さんのお役に立てば幸いです!
以上がPHP および MySQL での Swoole および Workerman のメッセージプッシュのリアルタイム性と信頼性の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。