3

我有一个带有 Apache 的服务器。

我对一个文件的并发读写操作有问题。

假设我index.html在 Apache DocRoot 中有文件。在浏览器中我可以打开阅读它。

我正在使用 Eclipse IDE 通过 SSH(或 FTP)直接在服务器上修改文件。在对文件进行了一些修改后,我将其上传到服务器。上传需要一些时间。

问题是:如果我尝试在浏览器中查看文件而文件正在上传,则上传挂起并且目标文件变为空白。看起来 apache 和 SSH 服务器都试图访问文件,SSH 写入,Apache 读取。碰撞打破了一切。

任何想法如何避免这种情况?也许一些 SSH 服务器配置选项或 Apache 模块?

4

1 回答 1

2

您需要先锁定文件。你知道你使用什么操作系统和 apache 配置,是你自己的系统吗?

这是来自 apache 服务器文档的引用:

EnableMMAP 指令


描述:
在交付期间使用内存映射读取文件

句法:
启用MMAP 开|关

默认:
启用 MMAP 开启

语境:
服务器配置、虚拟主机、目录、.htaccess

覆盖:
文件信息

地位:
核

模块:
核

该指令控制 httpd 在交付期间需要读取文件内容时是否可以使用内存映射。默认情况下,当处理请求需要访问文件中的数据时——例如,当使用 mod_include 传递服务器解析的文件时——如果操作系统支持,Apache httpd 内存映射文件。

这种内存映射有时会产生性能改进。但在某些环境中,最好禁用内存映射以防止出现操作问题:
• 在某些多处理器系统上,内存映射会降低 httpd 的性能。
• 在 httpd 进行内存映射时删除或截断文件可能会导致 httpd 因分段错误而崩溃。

对于易受这些问题影响的服务器配置,您应该通过指定以下内容来禁用已交付文件的内存映射:
启用 MMAP 关闭

对于 NFS 挂载的文件,可以通过指定以下内容为有问题的文件显式禁用此功能:

  启用 MMAP 关闭

当您的服务器崩溃时,我怀疑您为文件所在的目录设置了此选项。

添加

AllowMMAP 关闭

到您目录的 .htaccess 文件。

于 2013-08-20T01:45:02.000 回答