如何实现个性化的事件流?

mik*_*ikl 5 php personalization

我将为一个非政府组织的灵感网站工作,我正在寻求实施某种类似Facebook的事件流,其中包括"迈克尔推荐的苹果派 ","约翰评论巧克力蛋糕 "," 焦糖"等事件fudge发表于8小时前由Alice",etc.发布

事情是这些事件是基于兴趣的,所以有人只对焦糖和樱桃感兴趣,不应该看到苹果馅饼或巧克力蛋糕.这有很多排列,并且即时生成用户的个性化事件流意味着一些相当昂贵的数据库查询.

所以我的想法是通过在发生动作事件时进行某种后台处理来预先生成接收用户和发布事件(可能是一个简单的SQL JOIN表)之间的关系.

将数百个用户的偏好权衡到一个事件所需的工作必然是实质性的,因此它不能作为触发工作的POST请求的一部分来完成,因此我将不得不做很多工作.不同的过程.我目前正在寻找Gearman来完成这项任务,但我对建议开放态度.

我不是在寻找有人为我做我的工作,但如果有人有任何建立此类事情的经验,我很乐意听到你的想法.

Ben*_*mes 2

我有一些在社交网站上构建新闻流的经验,是的,当您有多种类型的事件和多个兴趣级别(或隐私设置或用户权限)时,查询可能会很快变得非常复杂。

假设事件被查看的次数多于事件生成的次数,那么在事件发生时(而不是每次有人请求新闻流时)进行一些非规范化并计算事件的潜在查看者确实有意义。

我建议运行一个后台进程,将这些事件对象(与其创建者相关)转换为更简单的消息对象(与其读者相关,即在新闻流中看到它们的人)。您最终可能会在每个事件中收到许多消息,但这将使向前端发出的请求更快,并将工作转移到后台进程。

我没有使用过 Gearman,但如果它允许您在后台进程中加载​​应用程序的环境并通过队列接收事件进行处理,那么这可能是一个好主意。

我的简单解决方案是使用beanstalkd和我自己的 PHP 脚本来推出我自己的解决方案。