Swoole と Workerman の PHP と MySQL によるメッセージ ブロードキャストとサブスクリプションのリアルタイム通知機能
要約:
インターネットの急速な発展により、リアルタイム通知機能 これは、最新のアプリケーションにも不可欠な部分になっています。 PHP と MySQL では、2 つの優れた拡張ライブラリである Swoole と Workerman を使用して、メッセージ ブロードキャストとサブスクリプションを実装し、リアルタイム通知機能を実現できます。この記事では、PHP と MySQL での Swoole と Workerman のアプリケーション シナリオを詳細に紹介し、読者がリアルタイム通知機能を理解して実践できるように、具体的なコード例を示します。
<?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) { $message = $frame->data; // 实现消息广播 foreach($server->connections as $fd) { $server->push($fd, $message); } }); $server->on('close', function ($ser, $fd) { echo "connection close: {$fd} "; }); $server->start();
上記の例では、Swoole WebSocket サーバーを作成し、 on('message')
を介してイベントをリッスンし、以下を実装します。メッセージブロードキャスト機能。新しい接続が確立されると、接続 ID が出力され、メッセージを受信すると、すべての接続が横断され、各接続にメッセージが送信されます。
<?php require_once './Workerman/Autoloader.php'; use WorkermanLibTimer; use WorkermanWorker; $worker = new Worker("websocket://0.0.0.0:2345"); $worker->onWorkerStart = function () { Timer::add(1, function () { // 实现消息广播 foreach (Worker::$worker[0]->connections as $connection) { $connection->send('Hello'); } }); }; $worker->onConnect = function ($connection) { echo "New connection "; }; $worker->onMessage = function ($connection, $data) { echo "Receiving message: {$data} "; }; $worker->onClose = function ($connection) { echo "Connection closed "; }; Worker::runAll();
上記の例では、Workerman WebSocket サーバーを作成し、Timer::add()
メソッドを通じて実装しました。メッセージブロードキャストを実現するために定期的にメッセージを送信します。新しい接続が確立されると関連情報が出力され、メッセージを受信するとメッセージの内容が出力され、接続が閉じられると対応する情報が出力されます。
CREATE TABLE `messages` ( `id` int(11) NOT NULL AUTO_INCREMENT, `content` varchar(255) NOT NULL, PRIMARY KEY (`id`) ); CREATE TRIGGER `new_message` AFTER INSERT ON `messages` FOR EACH ROW BEGIN DECLARE message VARCHAR(255); SET message = CONCAT('New message: ', NEW.content); -- 发送实时通知 INSERT INTO `notifications` (`message`) VALUES (message); END;
上記のトリガー定義により、新しいメッセージが messages
テーブルに挿入されると、トリガー内のコードが自動的にトリガーされ、メッセージ情報が通知
テーブル。次に、Swoole サーバーまたは Workerman サーバーに、notifications
テーブルを定期的にクエリする機能を実装し、新しい通知がある場合は、対応するクライアントに送信します。
以上がPHP と MySQL の Swoole と Workerman のメッセージ ブロードキャストとサブスクリプションのリアルタイム通知機能の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。