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

2011-09-09 10:24:32 +08:00
 mechille
高效并且实时...

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

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

@mechille 一是完善正则,二是发消息之前先搜索有没有这个用户
Livid
2011-09-10 11:37:57 +08:00
@chloerei @chloerei 嗯,现在好了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/17919

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX