每次使用php查看帖子时更新帖子视图

每次使用php查看帖子时更新帖子视图,php,mysql,sql,Php,Mysql,Sql,我不知道这是否被允许,但我需要澄清一个问题的解决方案 我有一个确切的问题。我只是不知道这个解决方案有什么意义,以下是解决方案: $sample_rate = 100; if(mt_rand(1,$sample_rate) == 1) { $query = mysql_query(" UPDATE posts SET views = views + {$sample_rate}

我不知道这是否被允许,但我需要澄清一个问题的解决方案

我有一个确切的问题。我只是不知道这个解决方案有什么意义,以下是解决方案:

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

有任何帮助吗?

对于每个查看页面的用户,将生成一个介于1和100($sample\u rate)之间的随机数。如果数字等于1,则数据库将根据可能值的数量(采样率)进行更新

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

如果您正在运行一个较小的操作,那么您应该在每次查看页面时简单地更新数据库,而不是使用抽样方法。

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

所以从长远来看,每个视图的数据库值将增加1


这是在标杆的准确性和速度之间的差距。因为MySQL查询比PHP rand函数调用更耗时。

这没有意义。那么,有10万人访问你的网站,而你只记录了100名访问者?@phil生成1的几率是1/100。对于生成的每个1,将向数据库中添加100个视图。因此,理论上(每个视图都是独立的),计数应该接近准确。如果流量较低,则需要降低上限。因此,如果要在每个视图中添加1,请将100更改为1?我也很困惑。根据您的解释,根据上面的代码,每个页面视图将记录100个视图?