Perl如何检测是否在Fast CGI FCGI下运行

时间:2014-07-31 23:14:53

标签: perl fastcgi

如果在FCGI或CGI下调用它,如何检测内部Perl脚本。我想检测是否在FCGI下运行然后加载FCGI模块,类似这样在脚本的顶部:

if ($ENV{FCGI}) {
    use FCGI;
    use MyFCGIHandler;
}

我知道我可以这样做:

use FCGI;
my $request = FCGI::Request();

#Returns whether or not the program was run as a FastCGI.
$isfcgi = $req->IsFastCGI();

但这意味着我必须加载FCGI模块并调用其Request和isFastCGI方法来检查如果应用程序未在FCGI下运行,哪个不好。

1 个答案:

答案 0 :(得分:1)

PerlMonks找到了这个:

#!/usr/bin/perl

use strict;
use warnings;

use CGI::Fast qw(:standard);

sub mode
{
        my $h=$CGI::Fast::Ext_Request;
        if (defined($h) && ref($h) && $h->IsFastCGI()) {
                return 'FastCGI';
        } else {
                return 'CGI';
        }
}

while (CGI::Fast->new()) {
        print
                header(),
                start_html('CGI or FastCGI?'),
                h1('CGI or FastCGI?'),
                p('This application runs in ',mode(),' mode.'),
                end_html();
}