如何在生产环境中迁移单个(php | | javascript | | |…)文件而不受时间限制

如何在生产环境中迁移单个(php | | javascript | | |…)文件而不受时间限制,javascript,php,apache,Javascript,Php,Apache,我有一些简单的文件(php | | javascript | | |…)正在生产环境中运行 (apache+(php | | javascript | | |…) 我正在努力思考迁移简单文件的正确方法 同时不停止为web客户端提供服务 可能的影响包括: Apache缓存文件:我不知道Apache如何处理文件(php、img等)。它是缓存它们,并检查要重新加载的更新时间戳,还是在每个http请求上重新加载 Linux文件是以原子方式更改的:如果我cp一个包含新内容的文件,apache只能看到我命

我有一些简单的文件
(php | | javascript | | |…)
正在生产环境中运行
(apache+(php | | javascript | | |…)

我正在努力思考迁移简单文件的正确方法 同时不停止为web客户端提供服务

可能的影响包括:

  • Apache缓存文件:我不知道Apache如何处理文件(php、img等)。它是缓存它们,并检查要重新加载的更新时间戳,还是在每个http请求上重新加载
  • Linux文件是以原子方式更改的:如果我
    cp
    一个包含新内容的文件,apache只能看到我命令的完整内容最终保存结果
  • Apache执行过程:我可以暂停Apache,保留当前请求,同时复制新的文件版本
想象一下以下情况:

  • 有一些文件,比如php
    require_once
    file,以版本命名(例如:
    ABusinessClassD-v1.0.php
    ),支持向后兼容,只需从下往上逐个执行新文件的
    cp
    (数据库、静态文件(img)、php文件、javascript文件等)
  • 强制按需刷新浏览器代码
想象!=就这么简单!=现实

请问,有人能总结一下简单的手动更新步骤吗 apache产品中的一个简单文件,不停止web服务 客户机,在手动过程中故意放慢速度


在移动PHP代码库时,确保没有问题的唯一可靠方法是在同一台服务器上有两台服务器或两个部署

您的服务器1包含旧代码。服务器2是用新代码设置的。然后,您的DNS记录或负载平衡器/代理设置将被更改,以便从服务器2为您的站点提供服务

或者使用一台服务器,将Apache配置为从
/path/to/old
为应用程序提供服务,然后在
/path/to/new
中设置新版本。然后将Apache配置更改为对应用程序使用
/path/to/new
,然后重新启动服务器


如果您需要在文件名中使用版本号(
classd-v1.0.php
),那么您需要了解Git或Mercurial等版本控制软件。

我不太理解您的问题。。。你就不能修改你在本地主机上需要的东西然后部署吗?@elclanrs他担心他的站点在这样的部署过程中会失去完整性。用户可能会看到复制/上载了一半的HTML页面、不再匹配的图像等。他希望在不中断服务的情况下进行原子部署。版本控制只是如何区分新旧文件的一个示例。我不相信git(例如)会简化生产过程。会吗?在行间,我了解到您将解决方案定位在每个请求的路径服务过程中的较高节点。但是,会话cookie成为了新的问题。当前客户端必须重新连接,这类似于在客户端感知时关闭。大公司是如何做到这一点的?如果您正确配置会话存储,会话cookie将正常工作。