Hallo
Dazu noch eine Frage die grad aufgetaucht ist. Was ist der
Unterschied zwischen CGI und mod-perl?
Das ist hier schönbeschrieben:
http://de.wikipedia.org/wiki/Common_Gateway_Interface
Wann verwendet man was?
CGI ist nur eine Interfacebeschreibung, kann man mit allem
Möglichen machen. Du kannst auch ein shell-Skript oder ein
kompiliertes Fortran-Programm nach ins cgi-verzeichnis legen,
sofern dieses Programm die Parameter richtig lesen kann (GET
und POST) und seine Ausgabe mit einem korrekten http-Header
(„Content-type: …“) beginnt.
Da CGI-Programme jeweils in einer eigenen shell
laufen sind sie zwar voneinander abgeschirmt, laufen
aber ansonsten „kontextfrei“ (unabhängig von vorher-
gehenden Aufrufen).
mod_perl ist ein mit einer Apache-Instanz geladener
Perl-Interpreter, der über ein API (APR) mit dem
Apache-Kern direkt kommuniziert.
Rufst Du ein Perl-Programm im CGI-Modus auf, so lädt
der Webserver eine Shell, in der der Perl-Interpreter
und dann das Perl-Programm gestartet werden - unter
mod_perl lädt das bereits geladene Perl den Quelltext
Deines Skriptes und führt ihn sofort als Subroutine aus.
Perl kann sogar Module wie CGI, LWP usw. bei Apache-
start ‚preloaden‘, diese stehen dann sofort (ohne ‚use‘)
in Deinem Skript zur Verfügung.
Es kann hier schon mal ein Faktor 1000 in der
Geschwindigkeit der Seitenauslieferung auftreten.
Bezüglich Deines Programms im Perl-Brett könnte man
unter mod_perl das Array ‚@ausgabe‘ am Apache-Start
laden und dann mit jedem Aufruf der Seite benutzen.
Der Nachteil: wenn mehrere unterschiedliche Parteien
einen Webserver mit mod_perl benutzen, ist es schwieriger
die Instanzen der unterschiedlichen Leute voneinander zu
isolieren. Bei einer Situation wie „One man One server“
ist das sicher kein Problem …
Grüße
CMБ