Swoole と Workerman は、PHP をベースとした 2 つの高性能ネットワーク通信フレームワークで、メッセージのサブスクリプションとパブリッシングにおける幅広いアプリケーション シナリオを備えています。この記事では、PHP と MySQL でメッセージのサブスクリプションとパブリッシュを実装する際の Swoole と Workerman の具体的なアプリケーションを検討し、対応するコード例を示します。
1. 背景の紹介
多くのアプリケーションでは、リアルタイムのメッセージ プッシュやイベント監視、分散タスク スケジューリングなどの機能を実装する必要があります。従来の PHP 開発方法では通常、ポーリングが使用されますが、これは非効率であるだけでなく、多くのシステム リソースを消費します。 Swoole と Workerman は、非同期かつノンブロッキングな方法で、高性能のメッセージ サブスクリプションおよびパブリッシュ機能を提供できます。
2. Swoole と Workerman の特徴
3. Swoole と Workerman のアプリケーション シナリオ
<?php $serv = new swoole_websocket_server("0.0.0.0", 9501); $serv->on('open', function($serv, $request) { echo "client connected "; }); $serv->on('message', function($serv, $frame) { foreach ($serv->connections as $fd) { $serv->push($fd, $frame->data); } }); $serv->on('close', function($serv, $fd) { echo "client closed "; }); $serv->start();
<?php require_once __DIR__ . '/vendor/autoload.php'; use WorkermanWorker; $worker = new Worker(); $worker->onWorkerStart = function($worker) { $worker->onMessage = function($connection, $data) { // 处理事件 echo "event happened: " . $data . " "; }; }; Worker::runAll();
4. MySQL と組み合わせた Swoole と Workerman のアプリケーション
ネットワーク通信のアプリケーションに加えて、Swoole と Workerman は次のこともできます。 MySQL と組み合わせて使用できます。データベースを組み合わせて、メッセージの購読と公開の機能を実現します。以下は、Swoole と MySQL を使用してメッセージのサブスクリプションと公開を実装するサンプル コードです。
<?php $server = new SwooleServer('0.0.0.0', 9501, SWOOLE_BASE); $server->on('receive', function ($server, $fd, $from_id, $data) { $conn = new mysqli('localhost', 'username', 'password', 'database'); if ($conn->connect_error) { echo "MySQL Connection Error: " . $conn->connect_error . " "; return; } // 消息入队 $insert_sql = "INSERT INTO message_queue (message) VALUES ('$data')"; $conn->query($insert_sql); $conn->close(); }); $server->on('workerStart', function ($server, $worker_id) { if ($worker_id === 0) { // 消息出队 $timer = SwooleTimer::tick(1000, function () { $conn = new mysqli('localhost', 'username', 'password', 'database'); if ($conn->connect_error) { echo "MySQL Connection Error: " . $conn->connect_error . " "; return; } $query_sql = "SELECT message FROM message_queue LIMIT 1"; $result = $conn->query($query_sql); if ($result && $result->num_rows > 0) { $row = $result->fetch_assoc(); // 处理消息 echo "Processing message: " . $row['message'] . " "; // 消息出队 $delete_sql = "DELETE FROM message_queue WHERE message = '" . $row['message'] . "'"; $conn->query($delete_sql); } $conn->close(); }); } }); $server->start();
上記のコードでは、メッセージのエンキューとデキューの操作が Swoole のメッセージ キューを通じて実装され、それによってメッセージのサブスクリプションと公開が実現されます。関数。
概要:
リアルタイム メッセージ プッシュでもイベント監視でも、Swoole と Workerman は高性能ソリューションを提供します。 MySQL データベースと組み合わせることで、より複雑なアプリケーション シナリオを実現できます。この記事の紹介とサンプル コードを通じて、読者が Swoole と Workerman による PHP と MySQL でのメッセージ サブスクリプションとパブリッシュの実装についてより明確に理解できることを願っています。
以上がSwoole と Workerman のメッセージのサブスクリプションと PHP と MySQL でのパブリッシュのアプリケーション シナリオの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。