运行时重命名php文件 - 是否可以锁定?

时间:2012-05-07 18:25:36

标签: php file-io

我需要在运行时更改php文件 这是一个配置文件,在紧急情况下需要更改其中一个设置 我的问题是,在写入之前是否可以lock该文件,以便尝试访问该文件的其他会话将推迟到文件被重写,并且不会使会话崩溃,说明找不到该文件?

1 个答案:

答案 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脚本修改/读取。