我正在建立一个博客风格的CMS用于学习,并希望重新做一个功能。
目前,如果您查看博客(并且已登录),则会根据查看时间以及该博客的ID设置Cookie。
在主页上,使用foreach循环回显博客。
进行检查以查找与博客ID匹配的cookie,如果匹配,则检查cookie的时间与博客更新后期的时间。
如果匹配,它还可以检测用户是否阅读了该博客。
这是有效的,但我的做法是针对移动专注的网站,而交叉设备则无法正常工作。我需要它为用户提供连续性。
我的想法是将数据库表格布置为
ID, blog_id, user_id, view_date
然后,当显示所有博客时,我可以参考此表并在设备上保持相同的统计信息。现在问题是......
要做到这一点,我需要一个foreach,在foreach。这不建议我知道,但我不记得如何做其他明智的事情?
另外假设,我有1000个用户,他们都浏览了20个博客。那是一张有20k行的桌子。
这是一个问题吗?检查每个博客的数据库?
或者我是偏执狂,而php / DB比我想的更强大?
或者......有更好的解决方法吗?
答案 0 :(得分:0)
简短回答:你有点偏执,对于MySQL数据库来说,20k行是没有用的。
答案越长:你需要的是:
表上的正确索引,因为您必须进行查找。假设您的用户数量总是超过(已查看)博客的数量,最好在blogId, userId
上创建索引,因此您只需查看几条记录。
正确的查询,例如:
SELECT view_date FROM tableBlogView WHERE userId = #fill in userId# AND blogId = #fill in blogId#
这样你就不需要为每一个这样的
进行预告