わかりました、私はそれを持っていると思います。要するに、この方法は、 「スウェーデンで最も人気のあるWebサイトの1つ」から理解できるように、十分に正確で優れた方法である可能性があります。説明させてください:
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%だけを追跡する必要があるのでしょうか。すべての訪問を追跡することはできませんか?
パフォーマンスについて言えば、1分あたり1000のデータベースクエリを想像してみてください。個人的にはそうするのは良いことではないと思います。したがって、クエリの量を減らすために、データベースへの呼び出しの数を実際に制限するには、データベースの入り口に「ガード」を配置し、ランダムな質問をして、人の数のバランスを取ります。中身。
もちろん、パフォーマンスと精度の完璧なバランスを見つける必要があります。自分でシミュレートできます。
$actual
最終結果の正確さを見つけるのに役立ちます
$hits
ヒット数が表示されます(ガードを通過した人)
$hit_chance
渡される結果の数を制限します。パフォーマンスは高くなりますが、精度は低くなります。見て!100に設定すると、チャンスは%1(1/100)になり、10000に設定すると、チャンスは1/10000になり、10 1/10(10%)に設定すると、などになります。
$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.'%';
もう一度考えてみると、それはあなた次第です-良い/悪い方法はないと思います。たぶん、サーバーはとても良いので、それを必要としないでしょうし、たぶん、サーバーはパフォーマンスをいくらか節約する必要があります。