【问题标题】:What database structure is better for database based unique hit counter system? [closed]哪种数据库结构更适合基于数据库的唯一命中计数器系统? [关闭]
【发布时间】:2012-01-17 22:56:07
【问题描述】:

我想使用 PHP 为我的网站添加唯一的计数器。所以这个计数器会为数据库中的每个页面保存访问者的 IP。我对这样的数据库结构有一个想法: 1 个表 (hits) 和 2 列 (ip, page_url)。所以我可以使用简单的 SQL 查询获得不同的 IP,但我担心性能。这是为每个页面获得独特点击的好方法吗?
总之,对于基于数据库的唯一命中计数器系统,哪种数据库结构更好?

编辑:
我也有第二个问题。在 PHP 文件中获取访问者的 IP 后,最好控制是否在数据库中不是该 IP,然后将其添加到数据库或仅添加所有访问者 IP,然后获取相关页面的不同 IP 以获得唯一命中数?

提前致谢。

【问题讨论】:

  • 这个问题太模糊,无法以现在的形式回答。你能把你的问题说得更具体些吗?

标签: php database database-design database-schema counter


【解决方案1】:

这个模式就足够了(虽然使用Redis 或其他基于内存的数据存储会更快,如果你可以将它添加到你的架构中)。

使用 PHP 的 ip2long(在存储 IP 地址之前)和 long2ip(在检索 IP 地址时)将 IP 地址存储在 base 32 中并将它们作为 IP 地址字符串进行检索 - 这样可以更快地检索(整数在查询子句、组等中比字符串更快)。

【讨论】:

  • 感谢您的回答。(+1) 我也有第二个问题。在 PHP 文件中获取访问者的 IP 后,最好控制是否在数据库中不是该 IP,然后将其添加到数据库或仅添加所有访问者 IP,然后获取相关页面的不同 IP 以获得唯一命中数?
【解决方案2】:

我会推荐使用 redis 数据库,它提供了开箱即用的功能并且速度非常快。尽管为此您需要维护这个额外的数据库。

对不起,我的回答不是很直接地回答你的问题,但如果你对其他技术持开放态度。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-21
    • 1970-01-01
    • 2014-08-11
    • 1970-01-01
    • 2023-03-25
    • 2012-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多