5

所以我正在尝试在 python 中进行更多的 Web 开发,并且我选择了由 lighttpd w/fastcgi 托管的cherrypy。但我的问题是一个非常基本的问题:为什么每次更改应用程序代码或底层库的代码时都需要重新启动 lig​​httpd(或 apache)?

我意识到这个问题源于对 fastcgi 模型的基本错误(即糟糕)理解,所以我对这里的任何教育持开放态度,但我习惯于只更改一个 PHP 文件并显示它,而不必反弹网络服务器。

任何解释/有用的嘲讽表示赞赏。

4

2 回答 2

8

这是因为性能。对于开发,自动重新加载很有帮助。但是对于生产,您不想自动重新加载。这实际上是 PHP 中一个相当大的瓶颈。每次访问 PHP 网页时,服务器都必须从头开始解析和加载每个页面。使用 Python,脚本在第一次访问后已经加载并运行。

正如已经指出的,CherryPy 有一个自动重载设置。我建议使用 CherryPy 内置服务器进行开发并使用 lighttpd 进行生产。这可能会为您节省一些时间。本教程向您展示了如何执行此操作。

于 2009-12-22T16:33:44.940 回答
0

从系统软件编写者的角度来看:这完全取决于有关服务器进程的元数据在您的守护进程(lighttpd 或 fcgi)中的组织方式。有些程序设计为只进行一次初始化——大多数情况下,这允许一个更简单、性能更好的内部编程模型。

通常很难以简单的方式对服务器进程重新加载配置数据进行编程。您可能必须引入锁和外部事件对象(UNIX 中的信号)。当您可以通过设计来同步数据结构时——即,只初始化一次......为什么要通过多次修改数据模型来使事情复杂化?

于 2009-12-22T16:24:41.620 回答