php - 如何实现个性化事件流?

标签 php personalization

我打算为一个非政府组织开发一个灵感网站,我希望实现某种 Facebook 式的事件流,其中包含“Michael 推荐的苹果派”之类的事件, “John 评论了巧克力蛋糕”,“Caramel fudge 是 Alice 8 小时前发布的”,等等。

问题是这些事件是基于兴趣的,所以有人只对焦糖和樱桃感兴趣,而不应该看到苹果派或巧克力蛋糕。这有很多排列组合,动态生成用户的个性化事件流意味着一些相当昂贵的数据库查询。

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

权衡数百个用户的偏好对一个事件的工作量必然是巨大的,所以它不能作为触发工作的 POST 请求的一部分来完成,所以我必须做很多在不同的过程中工作。我目前正在查看 Gearman对于这项任务,但我非常愿意接受建议。

我不是在找人为我做我的工作,但如果有人以前有过构建这类东西的经验,我很想听听你的想法。

最佳答案

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

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

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

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

我的简单解决方案是使用 beanstalkd 自己滚动和我自己的 PHP 脚本。

关于php - 如何实现个性化事件流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1855460/

相关文章:

php - Javascript/jQuery : File download ready event

php - 作为 "Service Account"连接到 Google Sites API

php - Laravel Eloquent - 多对一关系

php - 在嵌套循环中使用数组耗尽内存

php - 我如何编写一个包含每个产品的多个值的数组

asp.net-mvc - 我应该如何在 ASP.Net MVC 站点中进行身份验证?

search - Elasticsearch 的个性化搜索结果

针对跟踪了某些偏好的用户的 "recommend items"算法

java webpart 像asp.net 一样吗?