PHP 計數器規零 問題解法方法

在學期間,幫實驗室寫了一個計數器,利用 file 當成存檔的媒介,但是常常一陣子會被重置,到最近在慢慢的看 php document 的時候,發現了問題了。

當兩個訪客同時間進入時,會產生數值歸零(雖然機會小,但對高流量網站很大機會發生)

 果然是這樣,歸零是很少發生。但是被規零還是很令人苦惱。解決方法如下:

 

      $fp = fopen("counter.dat", "w");
flock($fp, LOCK_EX); // do an exclusive lock
fwrite($fp, $counter);
flock($fp, LOCK_UN); // release the lock
fclose($fp);
 
在寫檔前後,先把檔案 lock 起來,就可以解同時寫入造成規零的問題了。 

留言

這個網誌中的熱門文章

在 Chromebook 上使用嘸蝦米輸入法簡介

修復 Thunderbird 壓實重整造成的信件內容異常

在 scim 中安裝嘸蝦米:由行易公司提供的 cin 檔