鎖定檔案的目的是為了避免程式間的沖突,例如開啟了一個檔案要寫入資料,但如果未寫入時有另一個程式更新這個檔案,便會出現問題,PHP 內建有 flock() 可以對檔案鎖定,操作如下:
1 2 3 4 5 6 7 8 9 10 |
<?php $fp = fopen("filename.dat", "w"); // 開啟 filename.dat 為寫入模式 if (flock($fp, LOCK_EX)) { fwrite($fp, "new content"); fclose($fp); flock($fh, LOCK_UN); // 解除鎖定 } else { echo "lock failed"; } ?> |
flock() 第二個參數是設定鎖定或解鎖, 詳細可設定內容為:
— LOCK_SH, 取得共享鎖定, 讀取用
— LOCK_EX, 取得獨佔鎖定, 寫入用
— LOCK_UN, 解除鎖定
— LOCK_NB, 不要讓 flock() 在鎖定時堵塞