Php 使用flock和move进行高效文件更新
我想在其他进程正在读取文件时更新文件。PHPPhp 使用flock和move进行高效文件更新,php,concurrency,rename,flock,Php,Concurrency,Rename,Flock,我想在其他进程正在读取文件时更新文件。PHPflock()函数正好允许这样做 然而,在我看来,羊群只接受一个文件句柄。。这通常来自fopen。如果我想有效地执行此操作,我不想保持文件打开并写入,因为文件通过网络传输,写入操作可能会持续几秒钟(比如2-3秒) 所以我希望能将数据写入临时文件,然后移动它。在这种情况下,只有在我重命名文件时,文件的读卡器才会受到干扰 现在,将数据写入temp将不需要我使用flock。但是,如何使用锁定将tempfile正确移动到实际文件 我还想知道我是否真的需要首先锁
flock()
函数正好允许这样做
然而,在我看来,羊群只接受一个文件句柄。。这通常来自fopen。如果我想有效地执行此操作,我不想保持文件打开并写入,因为文件通过网络传输,写入操作可能会持续几秒钟(比如2-3秒)
所以我希望能将数据写入临时文件,然后移动它。在这种情况下,只有在我重命名文件时,文件的读卡器才会受到干扰
现在,将数据写入temp将不需要我使用flock。但是,如何使用锁定将tempfile正确移动到实际文件
我还想知道我是否真的需要首先锁定。。搬家不是很快吗?这会不会影响同步文件读取。我预计将有100次读取,但只有一次更新,而且更新将每小时发生一次重命名在POSIX系统中是原子的,所以您不需要flock。已打开文件的读卡器将不受干扰。(对正:打开的文件句柄指向inode,而不是目录项。重命名仅更改目录项。) 但是,读取器必须关闭并重新打开文件才能获取新内容。如果读者保持文件打开,他们将能够重新阅读旧内容