我在cgi-bin中有一个PERL脚本,并通过apache传递,该脚本从一组XML文件创建一个PDF文件。长话短说...它需要一段时间,我的浏览器在完成之前报告504 Gateway Time-out
错误。
我不想在我的apache配置中增加默认超时,但我确实想为这个脚本增加超时,只有经过适当身份验证的管理员才能访问该脚本。
是否有可以添加到PERL cgi脚本的命令会增加超时?
在PHP中有命令set_time_limit($n)
和ini_set('max_execution_time', $n);
我正在寻找PERL等价物(如果有的话)。
答案 0 :(得分:4)
Perl不是超时,它是你的HTTP服务器(例如Apache)。
目前传统的观点是,长时间运行的作业应该排队,由工作人员作业处理(不在Web应用程序逻辑中,然后客户端稍后重新轮询结果。
Folks将此模型用于短期运行的作业,以提高Web应用程序吞吐量,但如果您的作业超出服务器超时,您实际上只有三种选择:
-------------------------------- 2014-12-10编辑--------- --------------------
要增加网关超时,请在apache 2.4上查看mod_reqtimeout
的文档答案 1 :(得分:0)
use threads;
sub keepalive_httpd{
$SIG{'KILL'} = sub { threads->exit(); };
$| = 1;
do{
print ".\n";
sleep 1;
} while(1);
}
my $thr = threads->create('keepalive_httpd');
do something long...
$thr->kill('KILL')->detach();
print "<BR>\n";