2007年8月29日 星期三

PHP 寫入 / 讀取檔案的方法

在 PHP 中處理檔案的函數有幾十個,當中常用的是
fopen(); fclose(); flock(); fexists(); fwrite();

以下是開啟檔案與寫入檔案的基本做法:
//開啟檔案, 讀取模式
$handle = fopen($file, "r");
while (!feof($handle)) {echo fgets($handle);
fclose($handle);

//開啟檔案, 寫入模式
$handle= fopen($file,'w');
if (flock($handle, LOCK_EX)) { fwrite($handle,"abc"); flock($handle, LOCK_UN); } else {echo "Couldn't lock the file !";}
fclose($add);

這些函數可以參考 PHP 的說明: http://au3.php.net/manual/tw/function.fopen.php
特別要提一提 flock() 這個函數:

為什麼要重點說flock()?因為這是一個對於網路編程非常重要的功能。我舉個例子,兩個人同時投票,而且選的都是選項A,正確結果應該是2,但實際上卻會是1。為什麼會這樣?這就是因為同時計算與寫入的特點啦,所以我們在投票前一定要先用flock()函數把檔鎖住,投完後再打開檔讓其他的進程進行操作,這樣才能防止出現上面的那類錯誤。

沒有留言: