Maison > Article > développement back-end > Comment PHP continue-t-il à écouter les abonnements aux messages Redis et à les pousser vers le front-end ?
Comment PHP continue-t-il d'écouter les abonnements aux messages Redis et de les pousser vers le front-end ?
Présentation :
Dans de nombreuses applications Web, les messages push en temps réel sont une exigence courante. Lorsque nous devons envoyer des messages au front-end en temps réel, nous utilisons souvent l'interrogation ou l'interrogation longue pour obtenir les dernières données. Cependant, cette méthode consomme beaucoup de ressources du serveur et la vitesse de réponse n'est pas suffisamment rapide. L'utilisation du mécanisme de file d'attente de messages de Redis peut très bien résoudre ce problème. Cet article explique comment utiliser PHP pour surveiller en permanence les abonnements aux messages Redis et transmettre les messages au front-end en temps réel.
Étapes de mise en œuvre :
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(); ?>
In. ce code, connectez-vous d'abord au serveur Redis local via la méthode de connexion de Redis et utilisez la méthode d'abonnement pour vous abonner au canal spécifié (channel_name). Lorsqu'un message arrive, la fonction de rappel poussera le message vers le front-end.
<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>
Dans ce code, nous utilisons la bibliothèque jQuery pour faire fonctionner le DOM, en définissant une fonction showMessage, Afficher le message reçu sur la page.
<?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(); ?>
La partie clé de ce code est l'instruction echo En appelant. la fonction showMessage, le message est transmis à La page frontale s'affiche.
php subscribe.php
Maintenant, lorsqu'un nouveau message arrive, le script PHP poussera le message vers la page frontale pour l’afficher en temps réel.
Résumé :
Grâce aux étapes ci-dessus, nous pouvons utiliser PHP pour surveiller en permanence les abonnements aux messages Redis et envoyer les messages vers la page frontale en temps réel. De cette manière, la fonction d'envoi de messages en temps réel peut être réalisée, et le problème du gaspillage de ressources de serveur et d'une vitesse de réponse en temps réel insuffisante provoqué par l'utilisation d'interrogations ou de méthodes d'interrogation longues peut être évité. De plus, le code peut être optimisé et étendu en fonction des besoins réels pour améliorer les performances et la stabilité du système.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!