4

在瑞典最受欢迎的网站之一上工作时,我遇到了一个(对我来说)奇怪的片段,它在每个页面上都运行:

if( rand(0, 100) === 50 )
   // increase visitor count

它的作用是生成一个随机数,如果它等于一个固定数字(在本例中为 50),它将增加访问者计数。在显示统计信息的页面上,访问者数乘以例如 100 后才显示。

我确实意识到为每个页面视图写入数据库可能并不理想,尤其是对于像这样的非常大的网站。但这真的能产生正确的统计数据吗?仅仅因为 99 位访客的随机数等于所有但 100 并不意味着下一位将获得 100。

我是否反应过度,或者这是一个糟糕的统计实施?

4

2 回答 2

1

好的,我想我明白了。简而言之 - 这种方法足够准确,而且是我从“瑞典最受欢迎的网站之一”中了解到的一种很好的方法。让我解释:

有三个因素:

  1. 实际访问- 实际页面浏览次数
  2. 跟踪访问- 跟踪访问,通过随机数检查的访问
  3. 计算访问次数- 统计页面中显示的访问次数

我可以把它翻译成代码:

如任何页面所示:

//are you here? you are an ACTUAL visit
if(rand(0, 100) === 50){
    //are you here? you are a TRACKED visit
    //passing info to the database as current number+1
}

在统计页面中:

//variable $tracked is number of tracked visits from the page

//this is a CALCULATED visit
echo 'Page visits: '.$tracked*100;

我也可以说,实际访问也有 1% 的机会成为跟踪访问。但是现在出现了以下问题:为什么我只需要跟踪 1% 的访问量?我不能只跟踪所有访问吗?

  • 如果每个页面获得1000 次浏览/分钟,则此方法是一个很好的性能提升器,并且可以提供相当好的结果(足够接近实际访问量)。

  • 如果每个页面获得100 次浏览/分钟,此方法还可以提高一些性能,并且可能会给出非常准确的结果。

谈到性能,想象一下每分钟 1000 次数据库查询。我个人认为这样做不好。所以为了降低查询量,你(或他们)实际上通过在数据库入口放置一个“守卫”来限制对数据库的调用次数,问你一个随机问题,只是为了平衡人数里面。

当然,现在您必须在性能和准确性之间找到完美的平衡。你可以自己模拟一下:

  1. $actual将帮助您找到最终结果的准确性
  2. $hits将显示命中数(人通过守卫)
  3. $hit_chance将限制通过结果的数量。越高,性能越好,但准确度越低。看它!如果设置为 100,则概率为 %1 (1/100),如果设置为 10000,则概率为 1/10000,如果设置为 10 1/10 (10%),等等...
  4. $final将显示计算的访问次数。

$actual = 7000; //set the number of visits you want to check (check the current site statistics!)
$hits = 0; //initialization of variable
$hit_chance = 100; //set hit chance, currently 1%
$answer = intval(round($hit_chance / 2, PHP_ROUND_HALF_UP)); //just set answer between 0 and $hit_chance, which is an integer

    for($i=0;$i<$actual;$i++){
        if(rand(0, $hit_chance) === $answer){
            $hits++;
        }
    }

$final = $hits * $hit_chance;
$accuracy = 100 - ((($actual - $final) / $actual) * 100);

echo 'Actual visits: '.$actual;
echo '<br>Hits: '.$hits;
echo '<br>Final results: '.$final;
echo '<br>Result accuracy: '.$accuracy.'%';

再想一想,这取决于你——我认为没有好/坏的方法。也许服务器太好了,你不需要它,也许它们需要一些性能节省。

于 2012-11-13T16:19:36.413 回答
0

他们对它的记录越多,它就越准确。一旦他们有超过 1.000.000 次点击,就可以肯定地说他们有非常准确的统计数据,因为从长远来看,数学会变得更平。

在我看来,从短期来看,这非常糟糕。

于 2012-11-12T15:46:44.887 回答