我正在运行一个具有消息传递和通知功能的社交网络。每次用户发送消息或为另一个用户放置通知时,都会将一行插入到表 news_updates 中,其中包含有关消息或通知的详细信息,并将他的所有朋友插入到 news_seen 表中。(一旦阅读了消息,或者打开了与通知相关的项目,see 设置为 1,我将在我的 ajax 请求的回调函数结束时执行此操作 - 我正在收集所有 newsitem_ids新闻项目,当前打开,然后我正在做一个包含所有 newsitem_ids 的大插入)。
news_seen:
newsitem_id bigint,
user_id big int,
seen int DEFAULT '0'
目前,我每 3 秒运行一次 ajax 请求,以检查 news_updates JOIN news_seen 中的新闻。
现在我得到越来越多的用户,结果证明这是一个巨大的服务器负载。我已经阅读了很多关于 xmpp 之类的内容,我认为推送通知服务对我的网站来说会很棒。
唯一的问题是,我真的无法决定走哪条路,因为有很多选择。
另外,我考虑过创建自己的系统。我打算这样做:
在初始注册时为每个用户创建一个 xml 文件(并为已经注册的用户运行批处理)
一旦用户发送新闻更新(我有自己的 php 函数将它们写入数据库),我会包含一个小命令来为各自的朋友操作 xml 文件
我不会做我的 3sec ajax 请求,而是使用 jquery 流建立到 xml 文件的长连接,如果自上次请求以来进行了更改,我会做我通常的 ajax 请求,从数据库中轮询数据。
我不是在 ajax 请求中运行我的 check_seen ,而是将所有新项目插入到一个全局数组中,供一个间隔函数使用,该函数测试当前是否正在查看列表中的任何项目。
你认为这是个好主意吗?