我正在开发一些CGI脚本,我正在尝试找到一种解决方案来减少使用“use”导入大量模块时产生的“开始时间”。
更新
提供的解决方案很不错,但我正在使用的脚本在控制台和CGI模式下运行,检查是否存在一些典型的HTTP环境变量。
在“控制台模式”下,他们“正常”转储数据,在“html模式”下,他们会进行一些实时替换,并将其他HTTP标头发送给客户端。
我想在两种情况下改善启动时间。
答案 0 :(得分:12)
考虑使用CGI::Fast来启动一个perl进程来处理多个请求。我花了很少的精力将一些大的CGI脚本改为CGI :: Fast。与mod_perl不同,在托管网站上运行CGI :: Fast非常容易,因为你可以在不重启Apache的情况下重启你的脚本(至少那是我要求mod_perl时我的主机告诉我的内容)。
答案 1 :(得分:10)
如何使用mod_perl来运行脚本?
答案 2 :(得分:9)
答案 3 :(得分:4)
您可以随时尝试less pragma:
use less 'starttime';
当然,这是系统相关的*
。您最好的选择是使用mod_perl或其中一个FastCGI模块:CGI::Fast,FCGI,etc。
如果需要从命令行快速启动,您可能需要转移到客户端/服务器架构(这就是FastCGI)。
*
警告没有系统当前为较少的pragma实现starttime选项。
答案 4 :(得分:2)
好吧,其他人已经建议CGI可能是你的问题,所以我会认为你无法从图片中删除CGI 。
您可能需要考虑this old article。显然,启动时间较慢的一个原因是一个巨大的@INC,因此在短的PERL5LIB中整合所有东西似乎都有很大帮助(这似乎是一个公平的假设,但我从来没有尝试过)。
或者(或另外),如果您不介意在运行时付出一些代价,可以使用Class::Autouse
享受!
答案 5 :(得分:1)
尝试使用SpeedyCGI或Persistent Perl。
两者都实现了大致相同的想法:它们不是Perl解释器,而是解析程序并将其保存在内存中的包装器,从而节省了在每次运行时初始化解释器和解析所需的时间。
这应该可以正常使用您描述的双环境设置,在使用CGI :: Fast或mod_perl时可能会/可能不是这样。
编辑如果这有帮助,那很好。如果没有,则必须衡量脚本在运行时的花费。