PHP系统公告-发送通知给每个人
经常有这样的经历,就是登陆一个系统,会有一条系统消息提示,而这条消息是针对所有人的,那么程序是如何区分哪些人已经看过这条消息哪些人没看过呢?(因为没看过的人会有一个提示一直挂在页头,而看过的人这个提示会自动消失),请问这种效果用php是如何做到的,数据结构是如何设计?
回复讨论(解决方案)
首先得有一个消息列表,表里面有个是否阅读字段就行了啊
首先得有一个消息列表,表里面有个是否阅读字段就行了啊
那要是有十万个用户,有的看过了有的没看过 ,这个字段怎么标注啊?这条消息是谁发的,发给谁 表里面也都需要记录啊,这样你就可以根据每个用户的用户id去读取个人的消息了
表结构
table1:message
msg_id msg_content publish_time
table2:read
msg_id user_id read_time
发布一条系统消息 在message插入一条记录即可
如:
123 “下午休息” 1414468731
看过的人在read表中插入一条记录
123 5145 1414468745
判断是否有未读信息
select * from message where msg_id not in (select msg_id from read where user_id = 5145)
如果你对sql效率关注 可以用下面的
select * from message where message left join (select* from read where user_id = 5145 )temp on message.msg_id = temp .msg_id where temp.user_id is null;
表结构
table1:message
msg_id msg_content publish_time
table2:read
msg_id user_id read_time
发布一条系统消息 在message插入一条记录即可
如:
123 “下午休息” 1414468731
看过的人在read表中插入一条记录
123 5145 1414468745
判断是否有未读信息
select * from message where msg_id not in (select msg_id from read where user_id = 5145)
如果你对sql效率关注 可以用下面的
select * from message where message left join (select* from read where user_id = 5145 )temp on message.msg_id = temp .msg_id where temp.user_id is null;
这条消息是谁发的,发给谁 表里面也都需要记录啊,这样你就可以根据每个用户的用户id去读取个人的消息了
这是针对所有人的,所以这种推送模式不太合适
表结构
table1:message
msg_id msg_content publish_time
table2:read
msg_id user_id read_time
发布一条系统消息 在message插入一条记录即可
如:
123 “下午休息” 1414468731
看过的人在read表中插入一条记录
123 5145 1414468745
判断是否有未读信息
select * from message where msg_id not in (select msg_id from read where user_id = 5145)
如果你对sql效率关注 可以用下面的
select * from message where message left join (select* from read where user_id = 5145 )temp on message.msg_id = temp .msg_id where temp.user_id is null;
哈哈 那考虑考虑 redis
10W 用用户 需要15K内存标记用户是否发送 每条消息都是15K
1.读取消息 setbit msg_123 5415 1
2.判断是否读取 getbit msg_123 5415
消息表有内容和userid,如果userid=0,表示该消息为全局
用户表中,可以增加一个字段记录查看过的消息id,用逗号隔开,比如 1,20,123
看过一条就加一个消息id
如果消息比较频繁,可以考虑单独维护一个消息查看记录表,只有uid msgid两个字段,记录已查看
弄个表把看过的人装起来???
没有查询到的就显示给他
表结构
table1:message
msg_id msg_content publish_time
table2:read
msg_id user_id read_time
发布一条系统消息 在message插入一条记录即可
如:
123 “下午休息” 1414468731
看过的人在read表中插入一条记录
123 5145 1414468745
判断是否有未读信息
select * from message where msg_id not in (select msg_id from read where user_id = 5145)
如果你对sql效率关注 可以用下面的
select * from message where message left join (select* from read where user_id = 5145 )temp on message.msg_id = temp .msg_id where temp.user_id is null;
哈哈 那考虑考虑 redis
10W 用用户 需要15K内存标记用户是否发送 每条消息都是15K
1.读取消息 setbit msg_123 5415 1
2.判断是否读取 getbit msg_123 5415
再次谢谢你的帮助!
消息表有内容和userid,如果userid=0,表示该消息为全局
用户表中,可以增加一个字段记录查看过的消息id,用逗号隔开,比如 1,20,123
看过一条就加一个消息id
如果消息比较频繁,可以考虑单独维护一个消息查看记录表,只有uid msgid两个字段,记录已查看
没有查询到的就显示给他
恩!可以这样子试试

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Alipay Php ...

JWT est une norme ouverte basée sur JSON, utilisée pour transmettre en toute sécurité des informations entre les parties, principalement pour l'authentification de l'identité et l'échange d'informations. 1. JWT se compose de trois parties: en-tête, charge utile et signature. 2. Le principe de travail de JWT comprend trois étapes: la génération de JWT, la vérification de la charge utile JWT et l'analyse. 3. Lorsque vous utilisez JWT pour l'authentification en PHP, JWT peut être généré et vérifié, et les informations sur le rôle et l'autorisation des utilisateurs peuvent être incluses dans l'utilisation avancée. 4. Les erreurs courantes incluent une défaillance de vérification de signature, l'expiration des jetons et la charge utile surdimensionnée. Les compétences de débogage incluent l'utilisation des outils de débogage et de l'exploitation forestière. 5. L'optimisation des performances et les meilleures pratiques incluent l'utilisation des algorithmes de signature appropriés, la définition des périodes de validité raisonnablement,

L'application du principe solide dans le développement de PHP comprend: 1. Principe de responsabilité unique (SRP): Chaque classe n'est responsable d'une seule fonction. 2. Principe ouvert et ferme (OCP): les changements sont réalisés par extension plutôt que par modification. 3. Principe de substitution de Lisch (LSP): les sous-classes peuvent remplacer les classes de base sans affecter la précision du programme. 4. Principe d'isolement d'interface (ISP): utilisez des interfaces à grain fin pour éviter les dépendances et les méthodes inutilisées. 5. Principe d'inversion de dépendance (DIP): les modules élevés et de bas niveau reposent sur l'abstraction et sont mis en œuvre par injection de dépendance.

Comment définir automatiquement les autorisations d'UnixSocket après le redémarrage du système. Chaque fois que le système redémarre, nous devons exécuter la commande suivante pour modifier les autorisations d'UnixSocket: sudo ...

Comment déboguer le mode CLI dans phpstorm? Lors du développement avec PHPStorm, nous devons parfois déboguer PHP en mode interface de ligne de commande (CLI) ...

L'article traite de la liaison statique tardive (LSB) dans PHP, introduite dans PHP 5.3, permettant une résolution d'exécution de la méthode statique nécessite un héritage plus flexible. Problème main: LSB vs polymorphisme traditionnel; Applications pratiques de LSB et perfo potentiel

Envoyant des données JSON à l'aide de la bibliothèque Curl de PHP dans le développement de PHP, il est souvent nécessaire d'interagir avec les API externes. L'une des façons courantes consiste à utiliser la bibliothèque Curl pour envoyer le post� ...

Liaison statique (statique: :) implémente la liaison statique tardive (LSB) dans PHP, permettant à des classes d'appel d'être référencées dans des contextes statiques plutôt que de définir des classes. 1) Le processus d'analyse est effectué au moment de l'exécution, 2) Recherchez la classe d'appel dans la relation de succession, 3) il peut apporter des frais généraux de performance.
