【问题标题】:effective counter for unique number of visits in PHP & MySQLPHP & MySQL 中唯一访问次数的有效计数器
【发布时间】:2010-04-29 03:00:00
【问题描述】:

我正在为帖子的唯一访问次数创建一个计数器,所以到目前为止我有一个用于存储此类数据的表;

cvp_post_id  | cvp_ip | cvp_user_id

如果注册用户访问帖子,则第一次使用cpv_post_idcvp_user_id 插入记录,因此对于他的下一次访问,我会查询该表,如果记录可用,我不会将他算作一位新访客。

在匿名用户的情况下,也会发生同样的情况,但现在使用 cvp_ipcpv_post_id

我担心的是,每当有人访问帖子以检查是否有访问时,我都会进行查询,这样做更有效的方法是什么?

【问题讨论】:

    标签: php mysql performance count


    【解决方案1】:

    创建一个包含您的三列的唯一索引并使用 IGNORE 关键字执行插入:

    INSERT IGNORE INTO your_table (cvp_post_id, cvp_user_id)
    VALUES(1, 1);
    

    大多数用户只会访问一次,因此您避免使用 SELECT 后跟 INSERT

    【讨论】:

      【解决方案2】:

      有一种非常简单的方法可以帮助您使用会话保存大量查询,它应该是这样的:

      if(!isset($_SESSION['visited_post'][$yourPostID]))
      {
          //Perform your code
          $_SESSION['visited_post'][$yourPostID] = true;
      }
      

      【讨论】:

      • 当用户清除其 cookie 或更改浏览器时,这不会持续存在。
      【解决方案3】:

      为用户创建一个会话,在会话开启时,您需要检查一次(打开会话时)。从现在开始,当用户访问您已经知道他在数据库中的帖子时。

      【讨论】:

        猜你喜欢
        • 2021-03-08
        • 1970-01-01
        • 1970-01-01
        • 2018-01-13
        • 2015-09-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-16
        相关资源
        最近更新 更多