【发布时间】:2009-11-26 02:21:34
【问题描述】:
我有一个网站,用户可以在其中查看大量帖子。每次完成此操作时,我都会运行类似于UPDATE table SET views=views+1 WHERE id = ? 的查询。但是,这种方法有很多缺点:
- 无法跟踪浏览量何时发生 - 它们只是递增。
- 据我了解,更新表通常会清除该行的 MySQL 缓存,从而使该行的下一个 SELECT 变慢。
因此,我考虑采用一种创建表的方法,例如:object_views { object_id, year, month, day, views },以便每个对象都有一行 pr。这张表中的一天。然后我会定期更新objects 表中的视图列,这样我就不必一直进行昂贵的连接。
这是我能想到的最简单的解决方案,而且似乎也是对性能影响最小的解决方案。你同意吗?
(如果您想知道,该网站基于 PHP 5.2、Symfony 1.4 和 Doctrine 1.2 构建)
编辑:
目的是不是网络分析 - 我知道如何做到这一点,并且已经到位。有两个目的:
- 允许用户查看给定对象显示了多少次,例如今天或昨天。
- 允许网站管理员查看简单视图统计信息,而无需进入 Google Analytics、Omniture 或任何解决方案。此外,后端的结果必须是实时的,这是 GA 目前无法提供的功能。我不希望使用 Analytics API 来检索使用数据(不是实时的,GA 需要 JavaScript)。
【问题讨论】:
标签: php mysql symfony1 doctrine