3

我对FCGI协议的了解是,第一次调用应用程序时,它会将其加载到内存中,运行它,将响应返回给服务器,完成响应但不结束应用程序,它会保持它在内存中运行,然后下一个请求将使用这个在内存中编译的应用程序副本来处理请求。

阅读有关 PSGI 协议的信息,它似乎以相同的方式工作。

我的问题是,我的假设是否正确,它们对于每秒请求的应用程序速度是相同的。

如果它们的工作方式相同,也会出现令人困惑的问题,为什么我看到 plackup 具有启用 FCGI 的命令行选项。

4

1 回答 1

10

您要求比较苹果和水果。你的问题没有多大意义。

您可以使用多种底层机制来部署用 Perl 编写的 Web 应用程序。

  • 它可以是一个独立的 CGI 程序
  • 它可以在 mod_perl 下运行
  • 它可以在FCGI下运行
  • ETC ...

问题在于,对于每种部署机制,您都需要更改程序的编写方式。这意味着在开始编写代码之前,您需要知道您的目标是 mod_perl。这也意味着在这些不同的部署方法之间移动应用程序并非易事。

这就是 PSGI 解决的问题。您无需编写 CGI 应用程序、mod_perl 应用程序或 FCGI 应用程序,而是编写一个针对 PSGI 协议的应用程序。您可以在 CGI、mod_perl 或 FcGI(或许多其他部署方法)下部署完全相同的应用程序。

如果您使用 FCGI 处理程序部署您的 PSGI 应用程序,那么它将以与 FCGI 应用程序相同的方式工作。但后来很容易将其移动为作为 mod_perl 应用程序运行。或者使用 Starman 之类的东西将其作为独立服务器运行。

这些帮助有用?

于 2014-07-27T16:10:35.663 回答