PHP:将代码持续部署到服务器

时间:2016-01-30 21:07:10

标签: php deployment server frontend backend

我一直在想这件事。假设我有一个API调用,我可以通过www.example.com/api?call&param=value访问,这在我的服务器上做了一些用PHP编写的选择语言。

现在,如果我想更新直接使用此API端点的文件,我需要将其上传到服务器并有效地替换旧版本的文档。

但是,如果我通过我提供的地址调用API命令,而我上传新文件,我会收到一条错误消息,指出文件的意外结束应该是&#39 ;我一直在处理这个命令。这一切都是合乎逻辑的 - 毕竟,新文件还没有完全上传,所以它必须是不完整的。'

显然,如果我在上传新版本时有100个用户尝试拨打此电话,此问题可能会导致许多问题,如果此次通话与某些机密或其他敏感信息有关,则会更多数据。由于这个原因,我们可能会丢失重要数据,或者数据库中的记录已损坏。

所以我的简单问题是,如何通过部署新代码来规避这个问题?拥有大量用户流量的公司如何做到这一点?你能给我提供更多关于这个怪癖的链接吗?或者至少告诉我这个事件的行话?

谢谢。

1 个答案:

答案 0 :(得分:1)

  
    

或者至少告诉我这个事件的行话?

  

很难说出您确切遇到的问题,但看起来您正在谈论"升级服务器而不停机"。这就是我所说的。可能还有其他用语。

  
    

所以我的简单问题是,如何通过部署新代码来规避这个问题?

  

部署新代码是升级主机服务器中任何软件的部分案例。部署可能包括升级整个操作系统,http服务器,数据库等。常用的策略是“无需停机即可升级”#34;是"翻滚升级" (特别是对于流量大的网站而言)"切换" (通常用于小型单一主机站点)。如果只是PHP代码升级,不确定它是否过度,可能还有其他仅针对PHP环境的策略。

  
    

拥有大量用户流量的公司如何做到这一点?

  

"翻转升级"通常用于处理大量流量的分布式环境中的策略。这个想法是基于逐个升级多个主机。当一台主机在升级期间关闭时,流量将重定向到其他活动状态。当主机再次启动时,另一台主机将被关闭。依此类推,直到所有主机都升级。

"切换"是仅仅有一个主机,即未分发的"翻转升级"的部分情况。这个想法很简单,新代码部署到新服务点(通常是新主机,特别是在系统级别的东西正在升级时)。新服务与旧版本服务并行运行。当新服务启动并运行时,您可以将流量从旧目标切换到新目标(更新DNS记录,http服务器路由规则或其他,具体取决于您要切换的级别)。当所有连接/客户端最终重定向到新服务时,旧服务将被删除。

  
    

您能否向我提供更多关于这个怪癖的链接?

  

以下是如何为php app实施切换的示例:https://webmasters.stackexchange.com/questions/22165/updating-a-web-app-without-any-downtime 我不确定它是否实施了#34;没有停机时间"战略或只是"最小的停机时间"策略。