Segítségével mod_perl - Cikk

Mod_perl - azt a Apache modul, végrehajtja a Perl interpreter + Perl modulok, amelyek az alábbi érdekes funkciók: 1. Gyorsítás a lefordított cgi scriptek (Apache :: Registry.pm) 2. Perl interfész a C API Apache legtöbb fejlesztő használja mod_perl növelni a teljesítményét, hogy szkriptek - Apache nem indul új eljárás minden kérést script.pl, mivel most már a saját Perl interpreter, és összeállítja script.pl minden kérést, mivel Apache :: Registry.pm tárolja a lefordított szkriptjeidben a cache. Perl interfész a C API Apache által használt fejlesztők nem olyan gyakran.

Hogyan néz ki - a tipikus használat mod_perl.

Mi már az Apache-ot mod_perl támogatást, van script.pl:
és szeretnénk a forgatókönyvet által végrehajtott tolmács mod_perl és tárolt. Ahhoz, hogy ezt elérjük, módosítsa a httpd.conf:
Indítsa újra az Apache és győződjön meg arról, hogy minden jól működik.

Konfigurálása mod_perl.

Megértjük, hogy már írt a httpd.conf.
Mod_perl meghatározza Apache kezelő neve "perl-script". Következő üzenet: azt jelenti, hogy a kérelmeket az / cgi-bin kezeli mod_perl kódot.
Mod_perl is meghatározza számos irányelvre vonatkozik: - terhelés meghatározott Perl modulok. Scripts alatt futó mod_perl, használja őket, nem beleértve a () függvényt. Ami a forgatókönyvet, használja PerlModule eltér használata () azt a tényt, hogy a szkript modulnevek nem importálja. Betöltött modulok PerlModule, akkor is lehet használni, mint a felvezető kérelem kezelése fázisban cm. Az alábbiakban. - Apache feldolgozza a kérést, több fázisban - (Post-Read-Request, URI Translation, Fejes elemző, Access Control, hitelesítés, engedélyezés, MIME-típus ellenőrzése, FixUp, Response (), a fakitermelés, Razzia!). Perl * Handler irányelv kérjük vált kliens modul kezelő minden ilyen fázis. A leggyakrabban használt PerlHandler létrehozásáról szóló irányelv kezelőjének fázis válasz. A többi Perl * Handler irányelv (PerlPostReadRequestHandler, PerlTransHandler, PerlHeaderParserHandler, PerlAccessHandler, PerlAuthenHandler, ...) ritkábban használtak.

A mi httpd.conf utaltunk Apache :: Registry.pm a válasz szakaszában felvezető. Amikor azt kérdezzük script.pl a szerver, az Apache :: Registry.pm veszi a lefordított változata a script a gyorsítótárból és fut. Apache :: Registry.pm script.pl pályák változások a lemezen, és újjáépíteni, ha szükséges. A változások azonban a modulokat script.pl nem követi nyomon - ez hosszú. Tehát, ha megváltoztatta annak bármely modult, majd indítsa újra a kiszolgálót.

Jellemzői a script az Apache :: Registry

A két fő jellemzője cache script, ami rontja a sok ideg fejlesztő, ha nem tud róluk:

1. A globális változók script megtartják értéküket kérelmek között: kéri a forgatókönyvet, és többször jutunk: 1 2 3 4 5 ...
nélkül Apache :: Registry kép lenne ez, persze: 1 1 1 1 1 ...
Ne lepődj meg, ha megnyit egy új ablakot IE és megismételjük a folyamatot újra, akkor: 1 2 3 4 5 ... helyett 6 7 8 9 10 .... Általában a szerveren futó több gyermek feldolgozza httpd, mindegyiknek megvan a saját példányát a forgatókönyvet, és így azok másolatát $ i.
Httpd -x parancs elindítja a szerver egy gyermek folyamatot - hasznos hibakeresés.
Az alábbiakban egy példa arra, hogyan ne írjon: csak egy felhasználó adja meg a helyes bejelentkezési jelszó-, és mindenki más is csak megy :).


2. Bizonyos szkriptjében funkciók be vannak ágyazva a külső függvény. Ez teszi az Apache :: Registry script1.pl: mi show_var () definiálták belül handler (). azaz Mellékleteket. Mit veszíthetünk? show_var () már nem működik megfelelően, ha kívül van () változók, ebben az esetben az én $ var. Futtatni a scriptet egy párszor jutunk: Var volt és most is b. Var volt b és most c. Var volt c és most d stb
show_var function () 'látja' a másolatot a $ var. amely „látható” az első végrehajtási handler ().
Részletes leírt probléma van: gyári irányzékkal ellátott VÆltoz NestedSubroutines. Mi is érdekel a lehetséges megoldásokat:
1. Határozza meg a függvény nem a script, mint a modulban. A kód modulok obarachivaetsya semmilyen funkciót, és ez a probléma nem merül fel.
2. vagy egyszerűen nem obraschatsya a funkciók külső én () változókat.

Tegyük fel, hogy helyébe a szkriptek mod_perl, hogy nem működik rendesen a cache miatt a fent leírt problémák, és ha túl lusta, hogy igazodjanak. Használja Apache :: PerlRun helyett Apache :: Registry. Scripts nem lesz cache, de továbbra is végezhető beágyazott Perl interpreter.

termelékenység

Az én 300Celeron eredmények a következők: 774, 1039, 768 milliszekundum, ill. Ie alatt mod_perl Script Készült 6 ms (774-768), anélkül, mod_perl - a 71ms (1039-768). 12-szer nagyobb prozvoditelnost, mégis! Az igazi script, ez a szám kevesebb lesz, természetesen.

Itt az ideje, hogy ez egy nap

Kapcsolódó cikkek