当最终用户访问同时被覆盖的PHP文件时会发生什么?

时间:2011-09-16 10:17:17

标签: php apache

我正在创建一个发布过程,用于将新修改的PHP文件部署到生产服务器。我想知道当最终用户在发布期间被覆盖的同时访问PHP网页时会发生什么。

是否有发布网页脚本和代码的最佳做法,以解决上述方案中可能出现的任何问题?

2 个答案:

答案 0 :(得分:4)

  

我想知道当最终用户在发布期间覆盖PHP网页的同时访问PHP网页时会发生什么。

取决于文件是否已被完全覆盖。如果没有完全编写,PHP将尝试解析通常导致错误的不完整文件。

  

是否有任何发布网页脚本和代码的最佳做法可以解决上述情况中可能出现的任何问题?

你可以做很多事情,比如只要你更新东西(通过显示维护页面)或者让代码库的多个版本彼此相邻,并且能够通过文件实时切换一个版本,就可以阻止访问系统(符号链接)或服务器配置。

答案 1 :(得分:1)

有两种情况:

  • 用户在开始写文件之前开始阅读
  • 用户在文件开始写入后开始阅读

在第一种情况下,用户通常会读取旧文件(但这可能会因不同的文件系统而异)。请注意,您可能会更改多个包含彼此的文件,在这种情况下,用户可能会使用不兼容的文件版本(例如,1.1版本中的一个文件突然包含1.2版本的文件)。

在另一种情况下,用户将阅读部分文件,如hakre所述。

有些FTP服务器以临时名称上传整个文件,然后在完全上传后重命名。

有一些方法可以完全避免这些问题,例如在上传过程中关闭网站。如果您有一个loadbalanced environemtn,您可以在另一个服务器之后取下一个服务器,并在离线模式下进行升级,而无需关闭网站。