繁体   English   中英

Facebook如何像新闻源一样?

[英]How to Facebook like newsfeed?

如何在我的基于PHP的社区应用程序中阻止Facebook NewsFeed功能? 例如“X用户上传了新照片,Z参加了活动”。 从不同的表中获取所有这些数据会消耗太多资源。

谢谢。

有几种不同的方法可以做到这一点,但我建议的是这个。 保留一个“历史”表,其中包含每个用户的所有记录,时间戳以及操作的描述以及用于执行何种操作的标志(或预定义键)。 这将允许您有选择地查询单个表以查找某些类型的操作,并在设置的时间范围内进行显示。 但是,对于很多用户而言,此表会快速增长,因此您可以考虑清除以后不会再次使用的旧数据。 密切关注索引以保持查询快速,并考虑使用查询缓存,因为您可能经常生成相同的结果。

只要您不打算使用此历史数据来审核用户操作,那么在一段时间后转储它应该没问题。 如果确实需要审计跟踪,则可能需要考虑创建一个temp_history表来显示最近的操作,然后在CRON中将他们最近的操作移动到永久审计表以进行长期存储。

首先定义您在网站上调用的活动。 活动可以包含多个超链接。 所以一个php多维数组可能在这里有所帮助,它可以作为序列化对象进入表中。

假设x现在与y,z,a和b连接。 您可以将y,z,a和b定义为配置文件链接。 假设x评论了新照片。 在这种情况下,y成为该人的个人资料照片的新超链接。 说x成为zoozoo组的粉丝。 在这种情况下,zoozoo成为粉丝页面的超链接。

创建一个活动表,将其缩放大,使其成为activity_USER_ID,每次用户注册创建此表并检查您是否不必再次创建它。

定义1,2,3中的活动,或者您认为人们可能对您支持的社区感兴趣的最佳活动。

表结构应该很简单:活动php数组,时间戳。 如果你使用jQuery和Ajax来填充像在facebook中使用鼠标滚动完成的活动,那么你总是可以将php数组转换为json并在客户端进行格式化。

用户登录时执行此操作。

如果用户群大一百万,那么您可能想要放入一些将事件放在event_MM_DD_YYYY中的作业处理系统,然后您可以对这些事件进行批处理以将其存储在活动表中。

从未展示超过10 20 30个近期活动。

希望这对你有帮助:)

我想你已回答了自己的问题:从单个表中提取数据。

一个简单的方法是,所有其他组件都可以与中央“事件记录器”通信,该事件记录器记录用户新闻源的内容。

我喜欢Paul的解决方案(很容易使用像Symfony这样的某些框架)。 如果您希望在速度方面更进一步,您还可以使用每用户缓存系统,该系统将在第一次请求时查询数据并构建新的源。 然后检索以下请求的缓存数据。 事件记录器将在trigerred时清除相关用户的缓存。

在facebook的情况下,我认为他们使用'推送'ajax实现来通知客户端有新闻要显示。

Xcache,Apc或基于文件系统的缓存系统可以帮助您构建这样的系统。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM