doufu9947 2017-05-15 14:47
浏览 34

PHP用户个性化

There is a news site - about 50 000 news in mysql db for now. I need to create a list of most interesting and relevant news for each news page and remove the already viewed items for the current user (the actual personalization). I have made a list of news viewed in cookies already. So all I need is an architectural best approach for the way to filter viewed news.

I see only tow options:

  1. Keep in memory already calculated full list of most popular news (20-30k items) and for each customer request remove viewed ones.
  2. Each time user opens the page create a list of popular items for him again.

    In option 1 we can use caching with APC, REDIS etc., but always have a big arrays of data copied to each request which is eating a lot of memory. But in the option 2 we would have to request db each time so it would be not fast and CPU and DB resource consuming.

So is there any way I can avoid using so many resources and make it fast?

  • 写回答

1条回答 默认 最新

  • doubinduo3364 2017-05-15 16:27
    关注

    You can make something like

    SELECT ... article data .. FROM Articles 
    LEFT JOIN ViewedArticles USING (articleId)
    LEFT JOIN Users USING (userId)
    WHERE ViewedArticles.articleId IS NULL AND Users.userId = :id
    

    That should select select only the articles, that don't have matching articleId in the ViewedArticles table with matching userId.

    评论

报告相同问题?

悬赏问题

  • ¥15 BP神经网络控制倒立摆
  • ¥20 要这个数学建模编程的代码 并且能完整允许出来结果 完整的过程和数据的结果
  • ¥15 html5+css和javascript有人可以帮吗?图片要怎么插入代码里面啊
  • ¥30 Unity接入微信SDK 无法开启摄像头
  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并
  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算