我需要在运行时更改php
文件
这是一个配置文件,在紧急情况下需要更改其中一个设置
我的问题是,在写入之前是否可以lock
该文件,以便尝试访问该文件的其他会话将推迟到文件被重写,并且不会使会话崩溃,说明找不到该文件?
答案 0 :(得分: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脚本修改/读取。