2010-03-30 39 views
1

我做了一個簡單的計數器,但通過2,而不是1文件計數器加2,而不是1

$handle = fopen('progress.txt', 'r'); 
    $pro = fgets($handle); 
    print $pro; // incremented by 2, WTF? 
    fclose($handle); 

    $handle = fopen('progress.txt', 'w'); 
    fwrite($handle, $pro); 
    fclose($handle); 

每次我讀它已經增加了2的文件遞增,而不是1

+1

你在哪裏增加'$ pro'? – 2010-03-30 13:26:39

+1

問題不在於你顯示的代碼 - 它甚至沒有顯示計數器增加的位置。 – 2010-03-30 13:27:01

+0

對不起,打印$ pro後原始代碼增加; – SQLighter 2010-03-30 13:28:05

回答

2

那麼這裏的工作就是答案的基礎上,評論:

要caref ul與基於mod_rewrite的前端控制器,因爲它充當404錯誤處理程序。並且您的瀏覽器試圖獲取favicon.ico與每個請求...;)

順便說一句,我真的很喜歡其他答案。真正的SO方式。

+0

這實際上是因爲它正在讀取一個CSS文件,它訪問了同一個腳本,因此運行了兩次代碼。 – SQLighter 2010-03-30 13:50:44

1
$handle = fopen('progress.txt', 'r'); 
$pro = fgets($handle); 
print $pro; // incremented by 2, WTF? 
$pro++; 
fclose($handle); 

$handle = fopen('progress.txt', 'w'); 
fwrite($handle, $pro); 
fclose($handle); 

這似乎爲我

+0

我的不好,但原來的代碼是這樣的。 – SQLighter 2010-03-30 13:35:13

+1

我唯一的猜測可能是像Col. Shrapnel提到的那樣,其中可能由於諸如使用mod重寫的站點等原因,頁面實際上被訪問兩次。 – kilrizzy 2010-03-30 13:37:28

+0

就是這樣!由於這個原因,腳本確實運行了兩次。 謝謝Col. Shrapnel和kilrizzy。 – SQLighter 2010-03-30 13:42:47