我想你想爲每個頁面單獨計數器。 如果是的話,這裏是你的代碼編輯版本:
$fp = fopen('counter'.intval($_GET['id']).'.txt', 'r+');
while(!flock($fp, LOCK_EX)) { // acquire an exclusive lock
// waiting to lock the file
}
$counter = intval(fread($fp, filesize('counter'.intval($_GET['id']).'.txt'))); $counter++;
ftruncate($fp, 0); // truncate file
fwrite($fp, $counter); // set your data
fflush($fp); // flush output before releasing the lock
flock($fp, LOCK_UN); // release the lock
fclose($fp);
我把ID爲文件名。
編輯: ,使其在一個counter.txt文件(這是無效的):
$fh = fopen('counter.txt', 'c+'); //Open file
while(!flock($fh, LOCK_EX)) {} //Lock file
$var = json_decode(fread($fh, filesize('counter.txt'))); //Json decode file to array
if(isset($var)) $var[(int)$_GET['id']]++; else $var[(int)$_GET['id']] = 1; //Increment the id's array value by one
ftruncate($fh, 0); //Erase file contents
fwrite($fh, json_encode($var)); //Write json encoded array
fflush($fh); //Flush to file
flock($fh, LOCK_UN); //Unlock file
fclose($fh); //Close file
但是,作爲h2ooooooo說,一個基於數據庫的解決方案會更好。(我會寫,如果你想)
您是否想過切換到數據庫解決方案?它會工作得更好,而且不會讓你的網頁更加混亂。 – h2ooooooo
不,我想要這樣更容易獲得訪問 – user3329634