首先提供一些信息。
Web服务器文档根目录:/mySite/docroot/
CMS writes a **new** file index-new.html to a SAN/NAS filesystem (Linux/Unix): /mySite/docroot/
CMS writes to an **existing** file index-ex.html to a SAN/NAS filesystem (Linux/Unix): /mySite/docroot/
浏览器访问网络服务器,其中显示index-new.html
& index.ex.html
下的/mySite/docroot/
问题就在这里。
CMS编写index-new.html&amp ;;时的行为是什么? index-ex.html(仅50%完成),而Web服务器同时读取它们?
文件写入期间Linux / Unix是否自动锁定文件以避免其他进程读写?
如果是,Web服务器是否会等到锁定被释放,或者只是在检测到锁定时才返回错误?
如果不是,如何确保Web服务器发送完整地址的文件?
答案 0 :(得分:0)
没有。文件写入不是原子的。
这里的基本思想是创建一个临时文件并重命名。重命名文件是原子的,所以会有一个"不存在"错误或正确命中。
此外,当覆盖现有文件时,Linux上的rename()
调用或其他OS的equavilent调用将自动覆盖该文件。通过这种方式,您可以确保以完整的形式提供旧的或新的。