mod_perl: komunikace mezi handlery
Honza Pazdziora
adelton na fi.muni.cz
Úterý Únor 22 11:49:48 MET 2005
On Tue, Feb 22, 2005 at 11:14:58AM +0100, Jan Kasprzak wrote:
> : > nebo jinou strukturu.
> :
> : Pomoci pnotes.
> :
> No, pnotes to taky nezna (i kdyz vecer jsem na toto taky v manualu
> narazil).
A po
$ perl -MApache2 -MModPerl::MethodLookup -e print_method pnotes
To use method 'pnotes' add:
use Apache::RequestUtil ();
?
> : > nema metodu ->connection(), i kdyz v manualove strance pisou ze ma).
> :
> : A mas ji usenutou?
>
> No, jine dokumentace pisou ze ->notes je primo metoda $r,
> nikoliv $r->connection. Ale ani to nefunguje. Ted mam
No, takhle: bavime se o mod_perl 1 nebo mod_perl 2? V mod_perlu 2 je
potreba rikat use dalsi moduly, abys k tomu $r (nebo i $c) prihodil
dalsi metody.
> ----------- /var/www/html/perl/Kas.pm ----------------
> package Kas;
>
> use Apache::RequestRec();
> use Apache::Const -compile => qw(OK);
>
> sub handler {
> my $r = shift;
> $r->content_type('text/plain');
> print STDERR "Handler called\n";
> # $r->pnotes(a=>'b');
> # ^^^^ toto kdyz odkomentuju tak to spadne <-------------------
Jsme-li v Apache 2 / mod_perl 1.99, tak nahoru dat ten RequestUtil.
> Hmm, jaky je rozdil mezi ModPerl::Registry, ::RegistryBB,
> ::PerlRun ?
Registry je puvodni vec, RegistryBB je pokus o ciste prepsani toho
sameho (dokumentace rika
ModPerl::RegistryBB is similar to ModPerl::Registry, but does
the bare minimum (mnemonic: BB = Bare Bones) to compile
a script file once and run it many times, in order to get
the maximum performance. Whereas ModPerl::Registry does
various checks, which add a slight overhead to response times.
) a PerlRun neni persistentni.
> Jaky nastroj/modul mam pouzit, pokud chci programovat
> webove aplikace tak, ze
>
> - URL (tedy <Location>) bude odpovidat primo skriptu (cili
> http://mujserver/cesta/skript.pl by znamenalo, ze se spusti
> sub handler() z <DocumentRoot>/cesta/skript.pl), zadne
> obskurni mapovani modulu na <Location> v httpd.conf.
PerlResponseHandler
> - preferuji spousteni sub handler(), ale prinejhorsim se muze spoustet
> i ten skript jako hlavni program
Napsat si vlastni modul, ktery udela to nacteni, kompilaci a spusteni
${package}::handler, da se na to s pouzit ModPerl::RegistryCooker.
> - skripty se maji predkompilovat, ale musi se zaroven nacist pri zmene
> toho skriptu ve filesystemu
Pouzit should_compile_if_modified nebo prislusne predefinovat.
> - totez (znovunacteni) pro perlove moduly, ktere si reknu (nejlepe
> v jinem nez systemovem adresari (Apache::Reload nebo Module::Reload?)
Apache::Reload, pripadne vzit tohle jako zaklad pro svuj modul
s vytunenym chovanim.
> - chci aby aplikace (tedy ten skript.pl) pokud mozno dostala co nejvic
> veci zvenku - cili zejmena $r, $q (CGI), pripadne i $dbh.
> Tohle ale lze zrejme udelat nejakym handlerem pred ModPerl::Registry.
Ano, dat to do toho *Registry* modulu.
> - a pokud by bylo vic moznosti, tak preferuju system, ktery mi umozni
> psat aplikace tak, abych pokud mozno mohl kod psat hned a nemusel
> kazdou aplikaci zacit celou strankou ruznych "use" a "new CGI"
> a podobne.
Muzes se inspirovat na
http://www.fi.muni.cz/~adelton/perl/RayApp-1.165.tar.gz
je to tedy primarne zamerene na to XML / XSLT zpracovani, ale presne
tohle je tam taky a tohle se tam dela pomoci input modulu, ktere se
daji nakonfigurovat ruzne pro ruzna URL a pak vraci seznam parametru,
ktere se pak predavaji primo handleru. Dokumentace tam neni nijak
valna, ale jsou tam dost extensivni testy v httpd-tests, takze jako
dokumentaci je asi vhodne vzit tenhle podadresar, skripty jsou *.mpl
a konfigurace *.conf/*.conf.in.
--
------------------------------------------------------------------------
Honza Pazdziora | adelton na fi.muni.cz | http://www.fi.muni.cz/~adelton/
.project: Perl, mod_perl, DBI, Oracle, large Web systems, XML/XSL, ...
Only self-confident people can be simple.
Další informace o konferenci Perl