我将需要php
在运行时对文件进行更改。
这是一个配置文件,在紧急情况下需要更改其设置之一。
我的问题是是否有可能lock
在写入之前对文件进行处理,以便尝试访问该文件的其他会话将推迟到文件被重写,而不是使会话崩溃说找不到文件?
问问题
781 次
1 回答
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 脚本修改/读取。
于 2012-05-07T19:13:25.157 回答