Swoole과 Workerman의 PHP 및 MySQL의 메시지 방송 및 구독 실시간 알림 기능
요약:
인터넷의 급속한 발전과 함께 실시간 알림 기능도 최신 애플리케이션에서 없어서는 안 될 부분이 되었습니다. PHP와 MySQL에서는 두 가지 뛰어난 확장 라이브러리인 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();
on('message')
를 통해 이벤트를 수신하여 메시지 브로드캐스팅 기능을 구현했습니다. 새 연결이 설정되면 메시지가 수신될 때 연결 ID가 인쇄되고 모든 연결이 통과되며 메시지가 각 연결로 전송됩니다. 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
表中时,会自动触发触发器中的代码,将消息信息插入到notifications
表中。然后在Swoole或Workerman的服务器中,实现定时查询notifications
Workerman의 실시간 알림 기능 구현
Timer::add()
메서드를 통해 정기적으로 메시지를 보내는 기능을 구현했습니다. 메시지 방송. 새로운 연결이 설정되면 관련 정보가 인쇄되고, 메시지가 수신되면 메시지 내용이 인쇄되며, 연결이 종료되면 해당 정보가 인쇄됩니다. 메시지
테이블에 삽입되면 트리거의 코드가 자동으로 트리거되고 메시지 정보가 알림 코드> 테이블. 그런 다음 Swoole 또는 Workerman 서버에서 <code>notifications
테이블을 정기적으로 쿼리하는 기능을 구현하고, 새로운 알림이 있으면 해당 클라이언트로 보냅니다. 🎜🎜🎜요약🎜이 글에서는 Swoole과 Workerman이 PHP와 MySQL에서 실시간 알림 기능을 구현하는 방법을 소개하고 각 라이브러리의 애플리케이션 시나리오와 구체적인 코드 예제를 자세히 설명합니다. 이 두 가지 뛰어난 확장 라이브러리를 사용하면 실시간 알림 기능을 쉽게 구현하고 애플리케이션의 사용자 경험을 향상시킬 수 있습니다. 독자는 강력한 실시간 알림 기능을 달성하기 위해 자신의 필요에 따라 적합한 라이브러리와 방법을 선택할 수 있습니다. 🎜🎜
위 내용은 PHP 및 MySQL에서 Swoole 및 Workerman의 메시지 브로드캐스트 및 구독 실시간 알림 기능의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!