LINUX.ORG.RU

[mod_perl2][apache] Как получить параметры GET и POST запросов?

 


0

1

Судя по манам с apache.org, для mod_perl возвращался хэш $r->args с параметрами. Не могу найти аналогичного для mod_perl2.

Можно взять $r->url и разбрать его, но неужели нет ничего уже разобранного?

★★

Ответ на: комментарий от Lego_12239

$rr откуда взялось?

Я уже освоился вот так:

my $r = shift;
    $r->content_type('text/html');
    my $cgi = CGI->new($r);

    my $os = $cgi->param('os');
bk_ ★★
() автор топика

недавно как раз начал делать вебик на перле, решил на модперле сделать... пободался задолбался и вернулся к традиционному fcgi :)

Jetty ★★★★★
()
Ответ на: комментарий от iSage

Ой, нечудо пришло. А чем psgi лучше cgi? Я мельком прочел доки на сипэне - ничего сверхудобного не вижу.

bk_ ★★
() автор топика
Ответ на: комментарий от bk_

Тем, что написав скрипт под PSGI ты сможешь его запускать любым доступным способом: CGI, FastCGI, mod_perl.
Ну а CGI плох тем, что скрипт и все подключаемые модули компилируются при каждом обращении к нему. А это может оказаться весьма медленно и процессорожруче.

Olegymous ★★★
()
Ответ на: комментарий от bk_

Выше уже объяснили. Тем, что стартовать скрипт заного на каждый чих - каменный век и оверхеад. А еще cgi лишает всяких няшностей типа кип-алайвов и вебсокетов.

iSage ★★★★
()
Ответ на: комментарий от Olegymous

Ну а CGI плох тем, что скрипт и все подключаемые модули компилируются при каждом обращении к нему. А это может оказаться весьма медленно и процессорожруче.

Apache2::Reload спасет правнука российской демократии.

bk_ ★★
() автор топика
Ответ на: комментарий от bk_

Ты бы доку сначала к нему прочел, умник. Он нужен для авторелоада. И никак не избавляет от того, что в cgi-режиме скрипт каждый раз стартует заново с нуля.

iSage ★★★★
()
Ответ на: комментарий от bk_

Apache2::Reload это mod_perl, а не CGI. Или правнук говоря CGI подразумевает CGI.pm?

Olegymous ★★★
()
Ответ на: комментарий от bk_

$rr откуда взялось?

$rr - это объект Apache2::RequestRec. То, что передаётся первым аргументом твоему хэндлеру apache'ем. У тебя это $r, как я понял.

Lego_12239 ★★
()
Ответ на: комментарий от iSage

А на дворе тем временем стоял 2012 год...
fcgi/psgi осиль, чудо.

С помощью mod_perl можно встроить свой код на любом этапе обработки запроса. fcgi так может?

Lego_12239 ★★
()
Ответ на: комментарий от Lego_12239

Еще один. Не удивительно, что перл уж сколько лет умирающим считают. На это сборище хлама (мод_перл, cgi и кучу разрозненных скриптов вместо нормального роутинга) же без слез не взглянешь.

Ну и что, с мод_перл можно встроить свой код на этапе ACK? Нет? А что так. Вы ж сказали, что на любом можно.

Пожалуйста, идите дальше пишите свои админские однострочники и не лезьте в наш вебдев.

А если уж так интересно узнать ответ на свой вопрос - идите и читайте документацию. Сначала по fcgi, потом по psgi/plack middleware

iSage ★★★★
()
Ответ на: комментарий от iSage

Ну и что, с мод_перл можно встроить свой код на этапе ACK?

Что есть этап ACK?

Пожалуйста, идите дальше пишите свои админские однострочники и не лезьте в наш вебдев.

:-) Юноша, на mod_perl до сих пор работают высоконагруженные сайты. Хотя, fcgi штука хорошая. А, вот, psgi сомнительная.

Вы мне ссылочку на адекватное сравнение скорости fcgi и mod_perl покажите.

Lego_12239 ★★
()
Ответ на: комментарий от Lego_12239

Спасибо! Если я правильно понимаю, Apache2::Request -не mod_perl2, а сторонняя либа libapreq2. Почему это не было «встроено» в mod_perl2?

bk_ ★★
() автор топика
Ответ на: комментарий от Lego_12239

По ходу, Apache2::request сделан для обратной совместимости с mod_perl

bk_ ★★
() автор топика
Ответ на: комментарий от Lego_12239

Это я понял. Я имел ввиду, почему в mod_perl этот функционал был встроен, а в mod_perl2 это запилили с помощью отдельной либы.

А какие есть варианты для генерации html из перла кроме cgi.pm?

bk_ ★★
() автор топика
Ответ на: комментарий от bk_

Это я понял. Я имел ввиду, почему в mod_perl этот функционал был встроен, а в mod_perl2 это запилили с помощью отдельной либы.

Да вроде, libapreq была всегда.

А какие есть варианты для генерации html из перла кроме cgi.pm?

А что cgi.pm имеет что-то путное для генерации html? print(), шаблоны на xml, шаблоны HTML::Template и т.д..

Lego_12239 ★★
()
Ответ на: комментарий от Lego_12239

Да вроде, libapreq была всегда.

Да, возможно, я ошибаюсь, еще раз пересмотрел доку - там и правда нет Apache::Request.

А что cgi.pm имеет что-то путное для генерации html?

Да много всего. Ты предлагаешь print() - в CGI:: есть куча функций для всего: http://www.perlmonks.org/?node=CGI - сразу примеры с кодом генерации.

И, если можно, еще такой вопрос: как убедиться в том, что reload perl-скрипта апачем происходит только тогда, когда текст скрипта изменился, при условии, что я прописал Apache2::Reload в самом скрипте как use и в httpd.conf?

То есть, я хочу удостовериться в том, что лишних релоадов не происходит

bk_ ★★
() автор топика
Ответ на: комментарий от bk_

А что cgi.pm имеет что-то путное для генерации html?

Да много всего. Ты предлагаешь print() - в CGI:: есть куча функций для всего: http://www.perlmonks.org/?node=CGI - сразу примеры с кодом генерации.

:-) То, что cgi.pm предоставляет набор функций для выдачи html-кода, это я знаю. Я говорю про что-нибудь _путное_, а не о том, что там. Под путным я подразумеваю шаблоны.

И, если можно, еще такой вопрос: как убедиться

Проверить методом непосредственного опыта.

Lego_12239 ★★
()
Ответ на: комментарий от Lego_12239

Проверить методом непосредственного опыта.

Скажи, какой ман прочесть и куда нажать :)

bk_ ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.