2011-05-14 38 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