2011-05-14 44 views
3

我不知道这是否允许,但我需要澄清提供给问题的解决方案。每次使用php查看帖子时都更新帖子视图

What is the best way to count page views in PHP/MySQL?

我有确切的问题。我只是不知道如何解决方案有任何意义,这里是解决方案:

$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 
} 

任何帮助吗?

回答

3

这里mt_rand()生成1到100之间的随机数,因此该数为1的概率为1/100。 如果这生成1,我们将视图的值增加100. 因此,数据库每个视图的有效增加量 =(增加视图的概率)*(数据库中的增加) =(1/100)* 100 = 1

因此,从长远来看,它会为每个视图增加1的数据库值。

这是邮政精度和速度之间的平衡。由于MySQL查询的时间比PHP rand函数调用的时间要长。

1

对于每个查看页面的用户,都会生成1到100之间的随机数($ sample_rate)。如果数字等于1,那么数据库将根据可能的数值(采样率)进行更新。

这只是一种抽样技术,用于节省资源。这是用于大型网站的常用技术。

如果您正在运行较小的操作,则应在每次查看页面时简单更新数据库,这与使用采样方法相反。

+0

这没有任何意义。那么,有10万人访问您的网站,而您只记录100位访客? – Phil 2011-05-15 01:46:52

+0

@phil产生1的机会是1/100。对于生成的每个1,将100个视图添加到数据库。所以不,在理论上(每个视图都是依赖的),计数应该接近准确。如果流量较低,则需要降低上限。 – hankry 2011-05-16 02:07:29