demonchang
V2EX  ›  PHP

PHP 系统群发消息怎么处理,标记已读未读?

  •  
  •   demonchang · Jun 25, 2015 · 7380 views
    This topic created in 4006 days ago, the information mentioned may be changed or developed.

    我现在能想到的是每次用户登录之后,拉取系统消息然后记录到消息表,作已读未读的判断。。。
    求指导

    12 replies    2015-06-29 16:09:40 +08:00
    nilai
        1
    nilai  
       Jun 25, 2015   ❤️ 1
    建立一个表, 放消息id 未读消息用户id(1,2,3,4,5) 当某个用户已经读取了这个消息后  再更新这个字段,移除当前用户id
    zhouyuan24
        2
    zhouyuan24  
       Jun 25, 2015
    还有就是 last_read_recordID
    维护最后读得那条 聊天记录 ID

    >它得 就是未读, <它得 就是已读
    Tr0y
        3
    Tr0y  
       Jun 25, 2015   ❤️ 4
    用redis的bitmap,2MB空间就可以分配很多用户了,2进制,0表示未读,1表示已读。
    picasso250
        4
    picasso250  
       Jun 25, 2015
    我们就是这样做的
    wulongqiu
        5
    wulongqiu  
       Jun 25, 2015
    @nilai 可以再多提供一些内容吗?谢谢。
    mhycy
        6
    mhycy  
       Jun 25, 2015   ❤️ 2
    映射表做法算是最合适的做法了吧
    消息表:
    消息id,发布者id,内容,时间,更新时间,状态

    状态表:
    用户id,消息id,状态

    对于全局消息,直接读消息表,对于部分群发消息或对于一对一消息,读状态表
    demonchang
        7
    demonchang  
    OP
       Jun 25, 2015
    @mhycy 这个对于全局的直接读消息表那在每个用户状态显示正常么
    @nilai 数组的我也考虑过了感觉处理麻烦了点


    @Tr0y 暂时也想到了这个
    mhycy
        8
    mhycy  
       Jun 25, 2015
    @demonchang

    读消息表拉取消息,读了就给已读表写一个状态就好了。
    状态获取用join能很快的实现,性能问题忽略
    其实一般全局消息不多,分开查询也是可以的
    toben
        9
    toben  
       Jun 25, 2015
    @Tr0y 赞一个
    lianyue
        10
    lianyue  
       Jun 25, 2015 via iPhone
    这和语关系 吧 是数据库结构问题
    rogeecn
        11
    rogeecn  
       Jun 25, 2015
    @zhouyuan24 如果,12345用户名只读了135,246是个未读你这怎么办?
    blue7wings
        12
    blue7wings  
       Jun 29, 2015
    我觉得应该是这样的:
    首先是user表,user_table:
    id | name | xxxx |

    然后是message表,message_table:
    id | content | xxxx |

    加一张中间表,user_message:

    user_id | message_id | status |

    如果status状态为1就表示已读,这张表可以添加索引,也可以使用缓存技术,数据虽然大,应该不会太慢的。。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   946 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 93ms · UTC 19:24 · PVG 03:24 · LAX 12:24 · JFK 15:24
    ♥ Do have faith in what you're doing.