编程语言
首页 > 编程语言> > php文件在运行时重命名-是否可以锁定?

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

作者:互联网

我将需要在运行时对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不会锁定文件以防止其他线程在并行线程中运行修改/读取文件.

标签:file-io,php
来源: https://codeday.me/bug/20191201/2080232.html