3
unlink("cache/data.xml");

我觉得这可能会在服务器可能正在读取并将其提供给访问者时产生错误。

如何安全地删除文件,以便脚本将继续等待,直到来自 Web 服务器的读取锁定被释放(如果有),然后继续删除文件或它如何在那里工作?

谢谢

4

1 回答 1

5

这将取决于运行它的特定系统,但 UNIXunlink函数的手册页(PHPunlink函数很可能在内部依赖)这样说:

unlink()函数从其目录中删除由 path 命名的链接,并减少链接所引用文件的链接计数。如果该减量将文件的链接计数减少到零,并且没有进程打开该文件,则与该文件关联的所有资源都将被回收。如果一个或多个进程在删除最后一个链接时打开了文件,则删除链接,但文件的删除会延迟,直到所有对它的引用都已关闭。

换句话说,读取文件的进程可以继续这样做,即使文件正在被删除。

于 2012-04-16T09:54:09.130 回答