我有一个在Nginx进程之外运行的PHP脚本。它将文件复制到Web可访问的目录中。如果Nginx在我的PHP脚本覆盖该文件的那一刻尝试为HTTP请求提供文件时会发生什么?
这是在CentOS Linux上运行的。可能我的问题不是特定于PHP。如果您熟悉Linux上的文件I / O,请随意使用更多通用术语,操作系统级API等。
我还没有看到这个问题,但这是一个竞争条件,没有多少测试证明它不可能发生。如果出现问题(例如Nginx无法读取文件或提供部分写入的文件),我该如何解决?
答案 0 :(得分:1)
将文件重写为临时文件,然后将其重命名为正确的文件名。除非您在用户空间中使用奇怪的文件系统,否则重写是原子的。