如何将mod_perl中的Perl代码移植到FastCGI?

Gen*_*neQ 5 perl fastcgi mod-perl

我们有一个支持的现有Perl应用程序mod_perl.但是,我们的新主机(Dreamhost)不支持mod_perl,只支持FastCGI; 因此需要港口.

现有代码不使用任何Apache特定的东西,只是正常的Perl代码以可接受的方式编写mod_perl.

阅读文档和在线教程,似乎添加FastCGI支持涉及将现有代码包装在特定类型的循环中.以下是最常用的骨架代码:

A.使用FCGI

use FCGI;
while (FCGI::accept >= 0)
{
    #Run existing code.
}
Run Code Online (Sandbox Code Playgroud)

B.使用CGI :: Fast

use CGI::Fast
while (my $cgi = CGI::Fast->new()) 
{  
   #Run existing code.
}
Run Code Online (Sandbox Code Playgroud)

次要问题:

  1. 方法AB是否等同于添加FastCGI支持?
  2. 如果AB不同,那么使用一个和另一个的利弊是什么呢?
  3. mod_perlPortCigI 移植到FastCGI 时,是否有任何应该知道的最佳实践或问题?

谢谢.

Mic*_*sch 3

一般来说,FastCGI 应用程序与 CGI 非常相似。主要区别在于您可以利用您的流程能够持久的事实。您可以利用它在应用程序\xe2\x80\x94中获得速度优势,例如,您可以在运行的进程中缓存数据库数据。本质上,您正在将应用程序更改为自己的应用程序服务器,在 Web 服务器提供的 FastCGI 网关后面运行。

\n\n

这个想法是弄清楚如何使应用程序的处理方式适用于 FastCGI 网关。您使用任何 mod-perl 特定功能吗?如果是这样,请远离它。如果没有,那么就开始通过 FastCGI 进行对话。您的优势在于 Perl 可以使用 FastCGI 接口。我假设您正在使用某种版本控制系统,因此只需创建一个用于移植到 FastCGI 的分支即可。然后,开始将 POST 和 PUT 视为从标准输入读取,并将应用程序的响应视为写入标准输出。

\n\n

您可能还想通读为应用程序实现 FastCGI 接口的库。您可以在fastcgi.com上找到其中一些。这可能有助于您了解应用程序将执行的操作与当前执行的操作不同。

\n\n

祝你好运!

\n