gpt4 book ai didi

php - 跟踪给定行的 View

转载 作者:行者123 更新时间:2023-11-29 15:06:54 26 4
gpt4 key购买 nike

我有一个网站,用户可以在其中查看大量帖子。每次完成此操作时,我都会运行类似于 UPDATE table SET views=views+1 WHERE id = ? 的查询。但是,这种方法有许多缺点:

  • 无法跟踪综合浏览量何时发生 - 它们只是递增。
  • 据我了解,更新表通常会清除该行的 MySQL 缓存,从而使该行的下一个 SELECT 变慢。

因此,我考虑采用一种创建表格的方法,例如:
object_views { object_id,year,month,day,views},这样每个对象就有一行pr。这张表中的一天。然后,我会定期更新 objects 表中的 View 列,这样我就不必一直进行昂贵的连接。

这是我能想到的最简单的解决方案,而且似乎也是对性能影响最小的解决方案。你同意吗?

(如果您想知道,该网站是基于 PHP 5.2、Symfony 1.4 和 Doctrine 1.2 构建的)

编辑:
目的不是网络分析 - 我知道如何做到这一点,而且已经就位。有两个目的:

  • 允许用户查看给定对象已显示的次数,例如今天或昨天。
  • 允许网站管理员查看简单的统计数据,而无需使用 Google Analytics、Omniture 或任何解决方案。此外,后端的结果必须是实时的,这是GA目前无法提供的功能。我不想使用 Analytics API 来检索使用数据(不是实时的,GA 需要 JavaScript)。

最佳答案

Quote : Updating the table that often will, as far as I understand it, clear the MySQL cache of the row, thus making the next SELECT of that row slower.
还有更多的事情。这是数据库 killer 。我建议你制作这样的表格:object_views { object_id, 时间戳}这样您就可以聚合 object_id (count() 函数)。因此,每次有人查看该页面时,您都会在表中插入记录。偶尔你必须清理表中的旧记录。 UPDATE 语句是邪恶的:)在大多数平台上,它基本上会将行标记为已删除并插入新行,从而使表碎片化。更不用说锁定问题了。

希望有帮助

关于php - 跟踪给定行的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1801227/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com