Maison > Article > développement back-end > Comment mettre en œuvre une surveillance continue de l'abonnement aux messages Redis et mettre à jour le statut de l'utilisateur en PHP ?
Comment mettre en œuvre une surveillance continue de l'abonnement aux messages Redis et mettre à jour le statut des utilisateurs en PHP ?
Présentation :
Redis est une base de données en mémoire open source largement utilisée qui prend en charge les fonctions d'abonnement et de publication de messages. Lors du développement d'applications Web, nous sommes souvent confrontés au besoin de mettre à jour le statut des utilisateurs en temps réel, comme les systèmes de chat en ligne, l'affichage des données en temps réel, etc. Cet article explique comment utiliser PHP pour implémenter la fonction de surveillance continue des abonnements aux messages Redis et de mise à jour du statut des utilisateurs.
Étapes :
pecl install redis
, ou ajouter extension=redis.so
au fichier de configuration PHP pour activer l'extension. pecl install redis
命令来安装,或者在PHP配置文件中添加extension=redis.so
来启用扩展。Redis
类来连接Redis服务器。可以通过$redis = new Redis()
来创建一个Redis实例,然后通过$redis->connect($host, $port)
方法连接到Redis服务器。 $host
和$port
参数分别代表Redis服务器的主机和端口。代码示例:
<?php $redis = new Redis(); $redis->connect("localhost", 6379);
$redis->subscribe($channels, $callback)
方法订阅Redis的消息。$channels
是一个数组,可以指定一个或多个频道来订阅消息。$callback
是一个回调函数,用于处理接收到的消息。代码示例:
<?php function handleMessage($redis, $channel, $message) { // 在此处处理接收到的消息 // 可以更新用户状态或执行其他相关操作 echo "Received message: $message "; } $redis->subscribe(["channel1", "channel2"], "handleMessage");
$redis->psubscribe($patterns, $callback)
方法可以监听多个频道的消息。与订阅消息类似,$patterns
Redis
pour vous connecter au serveur Redis. Vous pouvez créer une instance Redis via $redis = new Redis()
, puis vous connecter au serveur Redis via $redis->connect($host, $port)
méthode. Les paramètres $host
et $port
représentent respectivement l'hôte et le port du serveur Redis. <?php function handleMessage($redis, $pattern, $channel, $message) { // 在此处处理接收到的消息 // 可以更新用户状态或执行其他相关操作 echo "Received message on channel $channel: $message "; } $redis->psubscribe(["channel:*"], "handleMessage");
$redis->subscribe($channels, $callback)
pour vous abonner aux messages Redis. $channels
est un tableau qui peut spécifier un ou plusieurs canaux pour s'abonner aux messages. $callback
est une fonction de rappel utilisée pour traiter les messages reçus. <?php function updateUserStatus($redis, $channel, $message) { // 更新用户在线状态 $userId = $channel; $status = $message; // 在此处执行相关操作,如更新数据库记录等 echo "User $userId is $status "; } // 用户登录时订阅消息 function userLogin($userId) { global $redis; $redis->subscribe(["user:$userId"], "updateUserStatus"); } // 用户退出登录时取消订阅消息 function userLogout($userId) { global $redis; $redis->unsubscribe(["user:$userId"]); } $user = "123"; // 用户ID userLogin($user); // 用户登录 // 模拟用户状态更新 $redis->publish("user:$user", "online"); sleep(3); // 假设有其他操作需要处理 $userLogout($user); // 用户退出登录
$redis->psubscribe($patterns, $callback)
pour écouter les messages de plusieurs canaux. Semblable à l'abonnement aux messages, $patterns
est un tableau qui spécifie un ou plusieurs modèles pour écouter les messages.
Exemple de code :
<?php // 监听用户状态更新 function handleUserStatus($redis, $pattern, $channel, $message) { echo "User $channel is now $message "; } // 监听所有用户状态更新 $redis->psubscribe(["user:*"], "handleUserStatus");
Remarque : lors de l'abonnement ou de l'écoute des messages, le code PHP se bloquera dans la fonction de rappel et ne poursuivra pas l'exécution jusqu'à ce que le message soit reçu. Par conséquent, vous devez utiliser des connexions longues ou le multi-threading dans les scripts PHP pour obtenir une écoute continue.
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!