PHP는 어떻게 Redis 메시지 구독을 계속 수신하고 이를 프런트 엔드로 푸시합니까?
개요:
많은 웹 애플리케이션에서 실시간 푸시 메시지는 일반적인 요구 사항입니다. 실시간으로 프런트 엔드에 메시지를 보내야 할 때 최신 데이터를 얻기 위해 폴링이나 롱 폴링을 사용하는 경우가 많습니다. 하지만 이 방법은 서버 자원을 많이 소모하고, 응답 속도도 실시간이 부족합니다. Redis의 메시지 큐 메커니즘을 사용하면 이 문제를 잘 해결할 수 있습니다. 이 기사에서는 PHP를 사용하여 Redis 메시지 구독을 지속적으로 모니터링하고 메시지를 프런트 엔드에 실시간으로 푸시하는 방법을 소개합니다.
구현 단계:
sudo apt-get install redis-server sudo apt-get install php-redis
<?php $redis = new Redis(); $redis->connect('localhost', 6379); $redis->subscribe(['channel_name'], function ($redis, $channel, $message) { // 将消息推送到前端 echo "<script>console.log('New message:', " . $message . ");</script>"; ob_flush(); flush(); }); $redis->close(); ?>
이 코드는 먼저 Redis의 connect 메소드를 통해 로컬 Redis 서버에 연결하고 subscribe 메소드를 사용하여 지정된 채널(channel_name)을 구독합니다. 메시지가 도착하면 콜백 함수는 메시지를 프런트 엔드로 푸시합니다.
<html> <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> </head> <body> <div id="message-holder"></div> <script> function showMessage(message) { $('#message-holder').append('<p>' + message + '</p>'); } </script> </body> </html>
이 코드에서는 jQuery 라이브러리를 사용하여 다음을 정의합니다. showMessage 함수, 수신된 메시지를 페이지에 표시합니다.
<?php $redis = new Redis(); $redis->connect('localhost', 6379); $redis->subscribe(['channel_name'], function ($redis, $channel, $message) { //将消息推送到前端 echo "<script>window.parent.showMessage('" . $message . "');</script>"; ob_flush(); flush(); }); $redis->close(); ?>
이 코드의 핵심 부분은 echo 문을 호출하는 것입니다. showMessage 함수를 사용하면 메시지가 프런트엔드 페이지에 표시됩니다.
php subscribe.php
이제 새 메시지가 도착하면 PHP 스크립트 실시간으로 표시하기 위해 메시지를 프런트 엔드 페이지에 푸시합니다.
요약:
위 단계를 통해 PHP를 사용하여 Redis 메시지 구독을 지속적으로 모니터링하고 메시지를 프런트 엔드 페이지에 실시간으로 푸시할 수 있습니다. 이를 통해 실시간으로 메시지를 푸시하는 기능을 구현할 수 있으며, 폴링이나 롱 폴링 방식을 사용하여 발생하는 서버 자원 낭비 및 실시간 응답 속도 부족 문제를 피할 수 있습니다. 또한 시스템 성능과 안정성을 향상시키기 위해 실제 필요에 따라 코드를 최적화하고 확장할 수 있습니다.
위 내용은 PHP는 어떻게 Redis 메시지 구독을 계속 수신하고 이를 프런트 엔드로 푸시합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!