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