PHP检查文件是否正在使用

10

我想创建一个使用 .php 文件来存储网站数据的平面文件数据库。我的唯一问题是,如果在从平面文件数据库中“选择”某些内容(这意味着正在读取文件)的同时进行“更新”(这意味着正在修改和写入文件),则文件会变为空白,我将失去所有内容。

我考虑了一些解决方案,可以检查文件是否正在使用,如果正在使用,则等待几毫秒并再次检查。


我只想创建自己的系统。 - Octavian
2个回答

11

1
这解决了你的问题吗?我也在尝试使用它,但似乎flock不能在不同的Apache请求之间锁定文件。例如,如果一个用户锁定了一个文件,而另一个用户在另一个Apache请求中检查该锁定,则该文件将不会被锁定。看起来flock仅适用于当前的PHP实例。你没有遇到这个问题吗? - Alexandre Schmidt
@AlexandreSchmidt 可能是因为 flock 使用了咨询式锁?http://php.net/manual/en/function.flock.php#78318 - tonix
请查看以下非常有用的教程:http://www.hackingwithphp.com/8/11/0/locking-files-with-flock。 - tonix

-3
请试一下,这在我的情况下有效...
    if(readyToRead(__FILE__)){
        echo "File is ready to read.";
    } else{
        echo "File is used by somebody else.";
    }

   function readyToRead($file){
       return ((time() - filemtime($file)) > 5 ) ? true : false;
   }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接