我想更新一个文件,而其他进程可能正在读取它。PHPflock()
函数正是允许这样做的。
然而,正如我所见,flock 只需要一个文件句柄 .. 这通常来自 fopen。如果我想有效地做到这一点,我不想保持文件打开并写入它,因为文件正在通过网络传输并且写入操作可能会持续几秒钟(比如 2-3 秒)。
所以我希望是否可以将数据写入临时文件然后移动它。在那种情况下,文件的读者只会在我重命名它时受到干扰。
现在将数据写入 temp 将不需要我使用flock。但是,如何使用锁定将临时文件正确移动到实际文件。
我还想知道我是否真的需要首先锁定......移动操作不会很快吗?它会伤害同时读取文件吗?而且我预计会有 100 次读取,但只有一次更新,并且该更新将每小时发生一次