如何减少Perl CGI脚本的启动时间?

mnd*_*ndg 5 perl performance cgi initialization

我正在开发一些CGI脚本,我正在尝试找到一种解决方案,以减少使用"use"导入大量模块时产生的"开始时间".

更新:

提供的解决方案很不错,但我正在使用的脚本在控制台和CGI模式下运行,检查是否存在一些典型的HTTP环境变量.

在"控制台模式"中,它们"正常"转储数据,在"html模式"下,它们进行一些实时替换并将其他HTTP标头发送到客户端.

我想在两种情况下改善启动时间.

Pau*_*lin 12

考虑使用CGI :: Fast来启动一个perl进程来处理多个请求.我花了很少的精力将一些大的CGI脚本改为CGI :: Fast.与mod_perl不同,在托管站点上运行CGI :: Fast非常容易,因为你可以在不重启Apache的情况下重启你的脚本(至少那是我要求mod_perl时我的主机告诉我的内容).

  • +1#也值得注意,FCGI不是服务器实现的约束,使其更加便携. (2认同)

sig*_*ice 10

如何使用mod_perl来运行你的程序?


Mar*_*usQ 9

  • 确保这实际上是你的瓶颈
  • 只导入您需要的模块
  • 确保您不必搜索数以千计的地方来查找它们
  • 考虑让昂贵的启动过程运行得很热(例如作为守护进程)并使用较轻的CGI脚本来启动它们
  • 查看各种加速器,而不是从shell执行完整的CGI(取决于您用于提供页面的内容).


Cha*_*ens 5

您可以随时尝试使用less pragma:

use less 'starttime';
Run Code Online (Sandbox Code Playgroud)

当然,这取决于系统*。最好的办法是使用的mod_perl或者FastCGI的模块之一:CGI ::快速FCGI等等

如果需要从命令行快速运行,您可能希望移动到客户端/服务器架构(FastCGI 就是如此)。

* 警告当前没有系统为 less pragma 实现 starttime 选项。