我使用以下基本PHP:命中計數器復位/降到非常低的隨機
<?php
if (file_exists('count_file.txt'))
{
$fil = fopen('count_file.txt', r);
$dat = fread($fil, filesize('count_file.txt'));
echo $dat+1;
fclose($fil);
$fil = fopen('count_file.txt', w);
fwrite($fil, $dat+1);
}
else
{
$fil = fopen('count_file.txt', w);
fwrite($fil, 1);
echo '1';
fclose($fil);
}
?>
的命中計數器(我寧願沒有之一,但我們這樣做是一直堅持)。 txt文件保持點擊的計數,它的工作原理...但隨機(有時後幾個星期,有時幾個月後)決定絆倒,並從4300下降到11。誰能告訴我如何糾正這一點因爲它變得煩人?
您的計數器缺少文件鎖定。看見'flock'。否則,如果多個腳本一次打開並保存文件,則可以輕鬆地獲得競爭條件。 [http://en.wikipedia.org/wiki/Atomicity_(database_systems)](http://en.wikipedia.org/wiki/Atomicity_(database_systems)) – hakre 2012-07-12 12:21:33
請您詳細說明一下嗎?我對PHP很陌生,這讓我花了很多時間纔得到工作 – John 2012-07-12 12:23:12
PHP手冊解釋了'flock'函數。在該頁面上,您將找到用戶註釋,進一步解釋並展示他們如何在文件中寫入這樣一個計數器的立場。 – hakre 2012-07-12 12:24:35