我们有一个支持mod_perl的现有Perl应用程序.但是,我们的新主机(Dreamhost)不支持mod_perl,只支持FastCGI;因此需要港口.
现有代码不使用任何Apache特定的东西,只是以mod_perl可接受的方式编写的普通Perl代码.
阅读文档和在线教程,似乎添加FastCGI支持涉及将现有代码包装在特定类型的循环中.以下是最常用的骨架代码:
A.使用FCGI
use FCGI; while (FCGI::accept >= 0) { #Run existing code. }
B.使用CGI :: Fast
use CGI::Fast while (my $cgi = CGI::Fast->new()) { #Run existing code. }
次要问题:
>方法A和B是否是添加FastCGI支持的等效方法?
>如果A和B不同,那么使用一个和另一个的利弊是什么呢?
>从mod_perl移植到FastCGI时,是否有任何应该知道的最佳实践或问题?
谢谢.
解决方法
一般来说,FastCGI应用程序与CGI非常相似.主要区别在于您可以利用您的流程能够持久化的事实.您可以利用它来获得应用程序的速度优势 – 例如,您可以在运行的进程中缓存数据库数据.从本质上讲,您将应用程序更改为自己的应用程序服务器,在Web服务器提供的FastCGI网关后面运行.
我们的想法是弄清楚如何使您的应用程序的处理方式适用于FastCGI网关.您是否使用任何mod-perl特定功能?如果是这样,请远离它.如果没有,那么就开始通过FastCGI进行交谈.您有一个优势,即Perl可以使用FastCGI接口.我假设您正在使用某种版本控制系统,因此只需创建一个用于移植到FastCGI的分支.然后,开始考虑POST和PUT,从标准输入读取,并将应用程序的响应写入标准输出.
您可能还想阅读为应用程序实现FastCGI接口的库.您可以在fastcgi.com找到其中的一些.这可能有助于您了解您的应用程序与当前正在执行的操作有何不同.
祝好运!