• 请不要在回答技术问题时复制粘贴 AI 生成的内容
mechille
V2EX  ›  程序员

未读消息提醒用什么思路做比较好

  •  
  •   mechille · Sep 9, 2011 · 6282 views
    This topic created in 5366 days ago, the information mentioned may be changed or developed.
    高效并且实时...

    不球代码球思路,环境:MPMA(MAC PHP MYSQL APACHE)
    21 replies    1970-01-01 08:00:00 +08:00
    darasion
        1
    darasion  
       Sep 9, 2011
    参考下v2ex的设计思路你就知道了,其实忒简单.
    ong
        2
    ong  
       Sep 9, 2011
    用户数大的情况,Task Queue+Memcache
    Livid
        3
    Livid  
    MOD
    PRO
       Sep 9, 2011
    1. 为需要用户知道的事件生成新的 notification。
    2. 每条 notification 带有时间戳。
    3. 记录下用户每次访问 notifications 页面的时间戳。
    4. 当新的 notification 创建好后,启动一个后台任务检查这些新的 notification 所带的时间戳是否大于用户上次访问 notifications 页面的时间戳,大于的条目的数量即是新的未读条目数量。

    GAE 有 task queue 可以用于启动后台任务。在没有此架构的环境中,可以通过 Celery 或是 CRON 来模拟实现。
    bhuztez
        4
    bhuztez  
       Sep 9, 2011
    实时的话,直接通过 XMPP 推送 ...
    mechille
        5
    mechille  
    OP
       Sep 9, 2011
    @Livid 像@+用户名这样的推送通知如何判断呢
    mechille
        6
    mechille  
    OP
       Sep 9, 2011
    @不存在 是否成立
    chloerei
        7
    chloerei  
       Sep 9, 2011
    @mechille 提交信息的时候用正则把 @ 后面的名字提取出来,然后到用户表搜这些名字,然后对搜到的用户发消息
    mechille
        8
    mechille  
    OP
       Sep 9, 2011
    @chloerei 果然是正则吗 - - 判断原理是根据后面的空格么 @chloerei字数字数 @chloerei 字数字数
    linchanx
        9
    linchanx  
       Sep 9, 2011
    @mechille 针对v2ex来说你只要过滤@后面a-z的字母组合就可以了 其他的空格什么的全部无视
    chloerei
        10
    chloerei  
       Sep 9, 2011
    @Livid @mechille 晕,收到三条消息
    linchanx
        11
    linchanx  
       Sep 9, 2011
    考虑到 账号有特殊字符的 像 . - 什么的 估计就要去user表 检索一下 不存在的就无视
    Livid
        12
    Livid  
    MOD
    PRO
       Sep 9, 2011 via iPad
    @chloerei 重复发送确实是个 bug,今天内修复。
    mechille
        13
    mechille  
    OP
       Sep 9, 2011
    @linchanx 原来v2ex全部都是英文id。那就简单多了~ @chloerei 呵呵果然引用一次就算一个消息啊,如果从人性化角度考虑,一篇内容引用同样的人多次。是否只提示一个消息比较合适捏?
    Livid
        14
    Livid  
    MOD
    PRO
       Sep 9, 2011 via iPad
    @mechille 是的,目前这个部分存在 bug,今天内修复。
    mechille
        15
    mechille  
    OP
       Sep 9, 2011
    忽然想到。如果是email怎么办,比如 [email protected]
    mechille
        16
    mechille  
    OP
       Sep 9, 2011
    半角.判断的么。 abc@qq com
    mechille
        17
    mechille  
    OP
       Sep 9, 2011
    圈给自己呢 @mechille 字数字数
    Livid
        18
    Livid  
    MOD
    PRO
       Sep 10, 2011
    @chloerei 重复发送的 bug 修正完毕。
    chloerei
        19
    chloerei  
       Sep 10, 2011
    @Livid @Livid

    @mechille 一是完善正则,二是发消息之前先搜索有没有这个用户
    Livid
        20
    Livid  
    MOD
    PRO
       Sep 10, 2011
    @chloerei @chloerei 嗯,现在好了。
    chloerei
        21
    chloerei  
       Sep 10, 2011
    @mechille https://github.com/chloerei/campo/blob/master/app/models/reply.rb#L37

    我一个项目里的实现,把LZ考虑的都做了处理
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2664 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 64ms · UTC 15:32 · PVG 23:32 · LAX 08:32 · JFK 11:32
    ♥ Do have faith in what you're doing.