Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当最终用户访问同时被覆盖的PHP文件时会发生什么情况?_Php_Apache - Fatal编程技术网

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

当最终用户访问同时被覆盖的PHP文件时会发生什么情况?,php,apache,Php,Apache,我正在创建一个发布过程,用于将新修改的PHP文件部署到生产服务器。我想知道,当最终用户在发布过程中完全同时访问PHP网页时,会发生什么情况 对于发布web脚本和代码,是否有解决上述场景中可能出现的任何问题的最佳实践 我想知道,当最终用户在发布过程中完全同时访问PHP网页时,会发生什么情况 取决于文件是否已被完全覆盖。如果没有完全编写,PHP将尝试解析不完整的文件,这通常会导致错误 对于发布web脚本和代码,是否有解决上述场景中可能出现的任何问题的最佳实践 您可以做很多事情,比如在更新内容时阻止访

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

对于发布web脚本和代码,是否有解决上述场景中可能出现的任何问题的最佳实践

我想知道,当最终用户在发布过程中完全同时访问PHP网页时,会发生什么情况

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

对于发布web脚本和代码,是否有解决上述场景中可能出现的任何问题的最佳实践


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

有两种情况:

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

在另一个场景中,用户将读取部分文件,如hakre所述

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


有一些方法可以完全避免这些问题,例如在上传过程中关闭站点。如果您有一个loadbalanced环境tn,您可以在不关闭网站的情况下关闭一台又一台服务器并在脱机模式下进行升级。

我认为这种情况将由Web服务器操作系统,甚至http服务器本身来处理,因为这很常见。这让我想起java线程死锁。你们可以锁定线程,就像我认为你们可以设置一种机制来锁定你们的文件,直到用户阅读,这样你们就可以控制你们的进程。