如何自动replaceApache中的文件?

当我replace服务文件(或者修改符号链接)并同时下载这个文件时,Apache很less(只有很小的百分比)用旧文件的头文件进行响应,但是用新文件的内容进行响应。

我在虚拟和物理机器上,在不同的发行版上(Red Hat,CentOS,Debian)在本地和远程的几个Apache 2.2(2.2.3,2.2.22- Debian stable)版本上进行了testing – 我总是可以使用它来复制它Python脚本反复下载线程(20-200线程)中的文件,并不时更换它在服务器(如每100ms)。

问题在哪里? 是Apache的错,还是我做错了什么?

更新:我也testing过Nginx,它没有这个问题。 但在极less数情况下(比Apacheless100倍),它不会看到文件并提供默认内容(404或默认页面)。

Apache不打算直接从文件系统提供dynamic内容。 我会期望像这样的问题,只是由于程序中的无意的caching。 如果您需要提供dynamic内容,请使用脚本,CGI或类似内容。

在POSIX兼容的系统上重命名是primefaces的。 所以写入filename.new然后再input“mv filename.new filename”应该是安全和一致的。 “旧”文件名上的任何打开的句柄将获得旧inode中的内容,新请求将获得新内容。

我build议改变服务器configuration,即改变,而不是在文件系统中晃动

 DocumentRoot /var/www/version_1 

 DocumentRoot /var/www/version_2 

然后发出apachectl -k gracefull 。 使用包括它只是一个小片段,你必须覆盖。 显然还有一段时间,一些apache进程可能会使用旧的头文件和其他新的头文件来处理旧文件,但混合头文件/内容的问题不应该发生。