在PHP / MySQL中计算页面浏览量的最佳方法是什么?

2022-08-30 12:36:58

我的意思是最有效的,现在把它放在我的帖子上.php文件是我唯一能想到的:

$query = mysql_query(" UPDATE posts SET views + 1 WHERE id = '$id' ");

有没有更好的方法,一种消耗更少服务器资源的方法。我问,因为如果这是一个小应用程序,我不会对上述内容有任何问题,但我正在尝试构建一些将被很多人使用的东西,我想尽可能地提高查询意识。


答案 1

如果您对节省资源感兴趣,并且仍然使用SQL进行报告,并且精确#无关紧要,则可以尝试按如下方式抽样(修改采样率以适合您的规模):

$sample_rate = 100;
if(mt_rand(1,$sample_rate) == 1) {
    $query = mysql_query(" UPDATE posts SET views = views + {$sample_rate} WHERE id = '{$id}' ");
    // execute query, etc
}

答案 2

如果memcache是服务器环境中的一个选项,那么这是另一种很酷的采样方法,但也要跟上精确的数字(与我的其他答案不同):

function recordPostPageView($page_id) {
    $memcache = new Memcached(); // you could also pull this instance from somewhere else, if you want a bit more efficiency*

    $key = "Counter for Post {$page_id}";

    if(!$memcache->get($key)) {
        $memcache->set($key, 0);
    }

    $new_count = $memcache->increment($key);

    // you could uncomment the following if you still want to notify mysql of the value occasionally
    /*
    $notify_mysql_interval = 100;
    if($new_count % $notify_mysql_interval == 0) {
        $query = mysql_query("UPDATE posts SET views = {$new_count} WHERE id = '{$page_id}' ");
        // execute query, etc
    }
    */

    return $new_count;
}
  • 不要介意纯粹主义者对辛格尔顿大喊大叫。或者你可以把它传递到这个函数中,如果你比实用主义者更纯粹,:)

推荐