gpt4 book ai didi

Perl 快速 CGI : do you ever exit the loop?

转载 作者:行者123 更新时间:2023-12-01 01:48:33 27 4
gpt4 key购买 nike

考虑标准的 Perl 快速 CGI 脚本:

#!/usr/bin/perl

use CGI::Fast;

# Init handler

while (my $cgi = CGI::Fast->new)
{
# Handle request
}

# Do you ever get here?

我是否曾经退出循环并有机会进行一些清理?

当服务器因为超出时间限制而抛出 test.fpl 脚本时会发生什么?

最佳答案

不正常,但有可能。
CGI::Fast::new是:

sub new {
my ($self, $initializer, @param) = @_;

if ( ! defined $initializer ) {
$Ext_Request ||= _create_fcgi_request( $in_fh,$out_fh,$err_fh );
return undef unless $Ext_Request->Accept >= 0;
}
CGI->_reset_globals;
$self->_setup_symbols(@CGI::SAVED_SYMBOLS) if @CGI::SAVED_SYMBOLS;
return $CGI::Q = $self->SUPER::new($initializer, @param);
}

如您所见,如果 $Ext_Request->Accept,它会返回 false (其中 $Ext_Request 是一个 FGCI::Request 对象)返回一个负数。

向下钻取让我们找到两个 C 函数之一,称为 OS_Accept ,一种用于 unix,一种用于 Windows。它们主要是 accept 的包装器系统调用。
accept如果被信号中断或进程耗尽资源(套接字或内存),则主要失败。大多数其他原因是代码中的错误的结果。

关于Perl 快速 CGI : do you ever exit the loop?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46478301/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com