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 à écouter les abonnements aux messages Redis et à les pousser vers le front-end ?

王林
王林original
2023-09-05 17:42:29800parcourir

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 :

  1. Installer les extensions Redis et PHP :
    Vous devez d'abord installer Redis et vous assurer que l'extension PHP Redis a été installée sur le serveur. Redis et les extensions Redis peuvent être installées via la commande suivante :
sudo apt-get install redis-server
sudo apt-get install php-redis
  1. Créez un script PHP pour l'abonnement aux messages Redis :
    Créez un script PHP pour écouter l'abonnement aux messages Redis L'exemple de code est le suivant :
<?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.

  1. Créer une page front-end :
    Créez une page front-end pour afficher le message reçu. L'exemple de code est le suivant :
<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.

  1. Intégrez la page frontale dans le script PHP :
    Intégrez la page frontale dans le script PHP L'exemple de code est le suivant :
<?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.

  1. Exécutez le script :
    Enregistrez le script PHP ci-dessus sous Subscribe.php et la page frontend sous index.html, puis exécutez la commande suivante dans le terminal :
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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn