PHP和&amp ;;中唯一访问次数的有效计数器MySQL的

时间:2010-04-24 08:36:45

标签: php mysql performance count

我正在为一个帖子创建一个唯一访问次数的计数器,所以我到现在所拥有的是一个用于存储这样的数据的表格;

cvp_post_id  | cvp_ip | cvp_user_id

如果注册用户访问帖子,首次会在cpv_post_idcvp_user_id中插入记录,那么在下次访问时我会查询表格,如果记录可用,我会不算他是新来访者。

如果是匿名用户,则会发生同样的情况,但现在使用了cvp_ipcpv_post_id

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

3 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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