在PHP / MySQL中计算页面浏览量的最佳方法是什么?
我的意思是最有效的,现在把它放在我的帖子上.php文件是我唯一能想到的:
$query = mysql_query(" UPDATE posts SET views + 1 WHERE id = '$id' ");
有没有更好的方法,一种消耗更少服务器资源的方法。我问,因为如果这是一个小应用程序,我不会对上述内容有任何问题,但我正在尝试构建一些将被很多人使用的东西,我想尽可能地提高查询意识。
我的意思是最有效的,现在把它放在我的帖子上.php文件是我唯一能想到的:
$query = mysql_query(" UPDATE posts SET views + 1 WHERE id = '$id' ");
有没有更好的方法,一种消耗更少服务器资源的方法。我问,因为如果这是一个小应用程序,我不会对上述内容有任何问题,但我正在尝试构建一些将被很多人使用的东西,我想尽可能地提高查询意识。
如果您对节省资源感兴趣,并且仍然使用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
}
如果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;
}