我有一个每小时更新一次的缓存文件。文件大小范围从 100KB 到 1MB。更新缓存的方式是使用 file_put_contents() 方法。
只有服务器写入文件。但是,可以连续访问该文件。用户通过一个脚本访问该文件,该脚本通过 readfile() 执行一次读取以将其回显给用户。
如果缓存脚本正在读取文件,并且服务器运行用户读取脚本,或者相反,会有问题吗?或者这是由 PHP 自动处理的>
基本上,您应该在写入或读取时锁定文件。至少,它保证没有问题。这是好的编程方式!示例如下所示。
<?php
$fp = fopen("/tmp/lock.txt", "w+");
if (flock($fp, LOCK_EX)) { // do an exclusive lock
fwrite($fp, "Write something here\n");
flock($fp, LOCK_UN); // release the lock
} else {
echo "Couldn't lock the file !";
}
fclose($fp);
?>