LINUX.ORG.RU

История изменений

Исправление outtaspace, (текущая версия) :

CGI.pm перестал использовать когда нашел эпичный баг с аплоадом больших файлов - модуль портил их. Во всем остальном этот модуль устраивал, даже тяжеловесность и тормознутость не напрягала.

Заменил написал адаптер на базе Mojolicious, а точнее Mojo::Message::Request. Могу себе позволить, ибо CGI.pm для сурового легаси, а Mojolicious использую в новых проектах.

Если хэдеры можно еще и так напечатать

Мои коллеги так и поступали :)

парсить параметры того же GET запроса вручную

# так выглядит адаптер, функции как в каноничном CGI.pm
use MojoCGI qw(method param upload remote_user remote_host);

Вот как выглядит главная часть MojoCGI:

BEGIN {
    $ENV{'MOJO_MAX_MESSAGE_SIZE'} = 10485760 * 50; # 10 Mb * 50
};

sub do_cgi_request {
    binmode STDIN, ':raw';

    my $req = Mojo::Message::Request->new();

    $req = $req->parse(\%ENV);

    until ($req->is_finished) {
        last unless my $read = STDIN->read(my $buffer, 131072, 0);
        $req->parse($buffer);
    }

    return $req;
}

Исходная версия outtaspace, :

CGI.pm перестал использовать когда нашел эпичный баг с аплоадом больших файлов - подуль портил их. Во всем остальном этот модуль устраивал, даже тяжеловесность и тормознутость не напрягала.

Заменил написал адаптер на базе Mojolicious, а точнее Mojo::Message::Request. Могу себе позволить, ибо CGI.pm для сурового легаси, а Mojolicious использую в новых проектах.

Если хэдеры можно еще и так напечатать

Мои коллеги так и поступали :)

парсить параметры того же GET запроса вручную

# так выглядит адаптер, функции как в каноничном CGI.pm
use MojoCGI qw(method param upload remote_user remote_host);

Вот как выглядит главная часть MojoCGI:

BEGIN {
    $ENV{'MOJO_MAX_MESSAGE_SIZE'} = 10485760 * 50; # 10 Mb * 50
};

sub do_cgi_request {
    binmode STDIN, ':raw';

    my $req = Mojo::Message::Request->new();

    $req = $req->parse(\%ENV);

    until ($req->is_finished) {
        last unless my $read = STDIN->read(my $buffer, 131072, 0);
        $req->parse($buffer);
    }

    return $req;
}