V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
mechille
V2EX  ›  程序员

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

  •  
  •   mechille · 2011-09-09 10:24:32 +08:00 · 5667 次点击
    这是一个创建于 4811 天前的主题,其中的信息可能已经有所发展或是发生改变。
    高效并且实时...

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

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

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

    我一个项目里的实现,把LZ考虑的都做了处理
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1172 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 23:32 · PVG 07:32 · LAX 15:32 · JFK 18:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.