2012-05-07 43 views
3

我將需要在運行時對php文件進行更改。
這是一個配置文件,緊急情況下需要更改其設置。
我的問題是在寫入文件之前是否可以使用lock文件,以便試圖訪問該文件的其他會話將推遲到該文件被重寫,並且不會導致會話崩潰,說明該文件未找到?運行時重命名php文件 - 是否可以鎖定?

回答

3

是的,請參閱flock功能從手動

例手工錄入:

<?php 

$fp = fopen("/tmp/lock.txt", "r+"); 

if (flock($fp, LOCK_EX)) { // acquire an exclusive lock 
    ftruncate($fp, 0);  // truncate file 
    fwrite($fp, "Write something here\n"); 
    fflush($fp);   // flush output before releasing the lock 
    flock($fp, LOCK_UN); // release the lock 
} else { 
    echo "Couldn't get the lock!"; 
} 

fclose($fp); 

?> 

顯然有一些注意事項,例如,如果您使用的是過時的文件系統(FAT)flock()將始終返回false。如果您將PHP用作ISAPI擴展,則flock不會鎖定文件被並行線程中運行的其他PHP腳本修改/讀取。