【问题标题】:Is it worth updating the database every time a page is visited? [duplicate]每次访问页面时都值得更新数据库吗? [复制]
【发布时间】:2014-05-04 06:50:35
【问题描述】:

我正在开发一个非常简单且小型的访客计数器,我想知道每次访客进入网站页面时打开 MySQL 数据库是否会占用服务器资源太重。

有些人将访问存储在纯文本文件中,也许我可以将数字存储在会话中(在每个页面都有一个键的数组中),当会话关闭时,我将其复制到数据库中一次?

最简单的方法是什么?

【问题讨论】:

  • 我说的是命中计数器,而不是实时计数器。但这可能是同样的问题。
  • 会话还需要在某处写入,以便在每次将其更改为将落入磁盘 i/o 或数据库的文件时进行更新。基本会话写入文件。
  • 如果您还没有 mysql 连接,您可以简单地使用文本文件或更好地使用 SQLite 3

标签: php mysql file counter


【解决方案1】:

在大多数强大的 Web 应用程序中,由于某种原因,每次加载页面时都会查询数据库,因此除非您有严重的资源限制,否则您不会通过计数器查询来破坏银行或节省大量加载时间躲开它。

一种考虑可能是增加数据库更新的值,以便可以查询一次更新以供多次使用。在您的情况下,您可以查看日志,例如:

INSERT INTO view_log 
VALUES (user_name, ip_address, visit_timestamp, page_name)

这可用于报告特定页面的受欢迎程度、跟踪用户活动、调试等。点击数将是:

SELECT COUNT(1) FROM view_log

【讨论】:

    【解决方案2】:

    如果您的网站已有数据库,请使用它!

    连接最有可能在打开之间汇集,并且需要很少的努力。

    如果您写入文件,则站点需要对其进行写入访问,并且您可能会在多个用户连接期间出现并发问题。

    如果服务器突然关闭,仅在会话关闭时持续存在也是一种风险..

    【讨论】:

      【解决方案3】:

      大多数网站都会打开一个 MySQL 连接,所以如果你这样做了,你就不必打开它两次。写入磁盘也需要资源(虽然可能更少),另外,如果您在繁忙的网站上有一个基于文件的计数器,您可能会很快耗尽磁盘的一小部分。并且这些文件写入将不得不相互等待,而 MySQL 处理多个请求更加灵活。

      无论如何,我会编写一个简单的计数器接口来抽象这个,这样你就可以轻松地切换到文件、MySQL 或任何其他存储,而不必过多地修改你的网站。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-10
        • 2016-12-19
        • 1970-01-01
        • 1970-01-01
        • 2021-11-09
        • 1970-01-01
        相关资源
        最近更新 更多