5

这一直困扰着我一段时间。

在已部署的 PHP Web 应用程序中,可以上传更改的 php 脚本并让 Web 服务器获取更新的文件,而无需重新启动。

问题?Ruby、Groovy 和 Python 等在语言表达能力、简洁性、功能性等方面都比 PHP“更好”,...your-reason-here。

目前,我真的很喜欢 Groovy(通过 Grails),但现实情况是 JVM 在应用程序代码的生产动态重新加载方面(根本)做得不好。基本上,Permgen 内存不足错误是一种虚拟保证,这意味着应用程序随时崩溃——不好。

Ruby 框架似乎从我所读到的内容中解决了这个问题:Passenger 可以选择在下一个请求时动态重新加载轮询目录中的更改文件(从而防止连接的用户断开连接、会话丢失等)。

独立的 Python 我完全不确定;它可能像 PHP 一样允许在不重新启动 Web 服务器的情况下动态重新加载 python 脚本。

就我们的 Web 工作而言,无论规范多么详细和精心计划,客户总是希望对已部署的应用程序进行更改。告诉客户,“当然,我们将在明天凌晨 4 点实施 [简单] 更改 [以免对已连接的用户造成严重破坏]”,这不会太顺利。

截至 2011 年,我们在动态重新加载和脚本语言方面处于什么位置?我们是永远注定要被 PHP 的便利所束缚,还是因为非 PHP 的乐趣而被迫重新启动已部署的应用程序?

顺便说一句,我一点也不喜欢 JSP、GSP 和 Ruby、Python 模板等价物,尽管它们可重新加载。This is a cake & eat it too thread,我们可以对应用程序的任何方面进行更改,而不必重新启动。

4

2 回答 2

4

您尚未指定 Web 服务器。如果您使用的是 Apache,那么 mod_wsgi 是运行 Python Web 应用程序的最佳选择,它具有不需要重新启动服务器的重新加载机制。

于 2011-02-16T08:27:57.820 回答
4

我认为你在这件事上做了比实际更大的交易。

对于任何应用程序来说,它永远不会关闭 1/2 分钟(这是重新启动服务器以获取文件更改所需的全部时间)非常重要的任何应用程序确实需要具有多个应用程序服务器实例以处理潜在故障的个别实例。一旦您有多个应用程序服务器来处理故障,您还可以安全地重新启动各个实例以进行维护,而不会引起问题。

于 2011-02-16T08:30:15.727 回答