如果我創建一個計數器程序,基本上加載文本文件「counter.txt」,然後它讀取文件,如果它包含一個數字,它會將數字加1並更新文件數字並保存文件。寫入文件的PHP問題
上述程序的代碼可以正常工作,可以讓每秒執行1次執行,但是當執行時間非常高時(例如每秒100次),問題就會開始。
我面臨的問題是文件內容有時會被刪除,有時計數器計數不正確。因此可以說我每秒執行100次執行,但計數只會增加10.我確定所有執行都已完成,因爲每次執行後都會寫入一個文件,並且在另一個目錄中寫入了100個文件以用於執行次數,但計數僅增加10.
<?php
$File = "counter.txt";
$handle = fopen($File, 'r+') ;
$data = fread($handle, 512) ;
$count = $data + 1;
fseek($handle, 0) ;
fwrite($handle, $count) ;
fclose($handle) ;
?>
您需要防止腳本的多個實例同時讀取/寫入文件。這可以通過鎖或文件鎖定來完成。見http://www.php.net/manual/en/function.flock.php – hakre