最好的我的意思是效率最高,现在将它放在我的post.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; }
并不介意纯粹主义者对单身人士的侮辱.或者你可以将它传递给这个函数,如果你比实用主义者更纯粹:)
恕我直言最好的解决方案是将views_count存储在内存(memcached,无论如何)中,并在内存中进行更新.(当然更新必须同步)
然后你可以使用cron脚本将这些值推送到db.(经过一段时间 - 秒,分钟,等等.)
您还可以检查这些代码行。我认为这会有所帮助,因为您只需一个文本文件就可以实现您的目标。它不需要任何数据库活动。
5> pradip kor..:
在数据库中,只有一列ip
定义了主键,然后使用以下PHP代码将ip存储在数据库中:
连接文件:
PHP文件:
显示数量:
使用此方法在数据库中存储所有服务器ip
注意:只有服务器ip可以存储或计数设备ip