Moin nochmal,
Das ist eine relativ genaue Beobachtung. Allerdings ist nicht Apache die Software, die da etwas zwischenspeichert, sondern Perl ist es.
--- das ist ja schonmal ein guter Tipp, danke!
Meine Suche bei Google hat mich zu diesem ausführlichen und genauen Anweisungs-Text geführt:
(http://www.farid-hajji.net/books/de/Hajji_Farid/pbv2/ew/cgi-modperl.html)
<<<START>>>
Das Modul Apache::Registry cacht nicht nur den kompilierten Code sondern auch den Zeitpunkt, an dem die Datei, die diesen Code enthält, zuletzt verändert wurde. Nun kann diese Datei verändert werden und Apache::Registry merkt das beim nächsten Aufruf und lädt diese Datei dann neu. Es ist also nicht notwendig, den Webserver neu zu starten, sobald ein unter der Kontrolle von Apache::Registry stehendes Skript verändert wird.
Leider reicht die Überwachung des Dateizeitstempels nicht weiter als zu der in der ersten Stufe eingelesenen Datei. Das ist in den meisten Fällen ausreichend, da Ihr CGI-Skript i.d.R. aus einer einzigen Datei besteht. Sobald aber diese Datei mit require() oder use() eine weitere Datei lädt, ist das für Apache::Registry nicht sichtbar. Wenn Sie jetzt eine durch require() oder use() eingelesene Datei verändern, merkt das Apache::Registry nicht. Dies kann zu schwer aufzufindenden Fehlern führen.
Sie vermeiden dieses Problem, indem Sie Apache::Registry anweisen, nicht nur das Modifikationsdatum der auszuführenden Datei zu cachen und zu überprüfen, sondern auch gleich dasjenige Modifikationsdatum aller Dateien zu überwachen, die in den durch %INC enthaltenen Pfaden (siehe Kapitel 14) im Auge zu behalten. Dies erreichen Sie dadurch, daß Sie das Modul Apache::StatINC als PerlInitHandler in ~www/conf/perl.conf installieren:
Alias /perl-registry/ /usr/local/apache/perl-registry/
<Location /perl-registry>
SetHandler perl-script
PerlHandler Apache::Registry
PerlInitHandler Apache::StatINC
PerlSendHeader On
Options +ExecCGI
</Location>
<<<ENDE>>>
Wenn ich es also schaffe, als PerlInitHandler das Modul Apache::StatINC zu verwenden, sollte meine Problematik damit behoben sein. Die einzige perl.conf-Datei auf meinem Rechner ist C:\Programme\xampp\apache\conf\extra\perl.conf und die sieht so aus:
<<<START>>>
LoadFile "C:/Programme/xampp/perl/bin/perl58.dll"
LoadModule perl_module modules/mod_perl.so
PerlRequire "C:/Programme/xampp/apache/conf/extra/startup.pl"
Only for NT + w2k + XP Professional
#<Files *.pl>
#SetHandler perl-script
#PerlResponseHandler ModPerl::Registry
#Options +ExecCGI
#PerlOptions +ParseHeaders
#</Files>
#<Files ~ (.asp)>
# SetHandler perl-script
# PerlHandler Apache::ASP
# PerlSetVar Global .
# PerlSetVar StateDir "C:/Programme/xampp/tmp"
#</Files>
###########################################
Alias /perl "C:/Programme/xampp/htdocs/modperl/"
<Directory "C:/Programme/xampp/htdocs/modperl/">
SetHandler perl-script
PerlResponseHandler ModPerl::Registry
Options +ExecCGI
PerlOptions +ParseHeaders
</Directory>
<Files *.pl>
SetHandler perl-script
PerlResponseHandler ModPerl::Registry
Options +ExecCGI
PerlOptions +ParseHeaders
</Files>
PerlModule Apache::ASP
Alias /asp "C:/Programme/xampp/htdocs/modperlasp/"
<Directory "C:/Programme/xampp/htdocs/modperlasp/">
SetHandler perl-script
PerlResponseHandler Apache::ASP
PerlSetVar Global .
PerlSetVar StateDir "C:/Programme/xampp/tmp"
</Directory>
<<<ENDE>>>
Egal in welche Blöcke ich die Anweisung "PerlInitHandler Apache::StatINC" einfüge: es geht nicht.
Eventuell hilfreich könnte noch die Datei C:/Programme/xampp/apache/conf/extra/startup.pl sein, die ja von perl.conf aufgerufen wird. Die sieht so aus:
<<<START>>>
#file:startup.pl
#---------------
enable if the mod_perl 1.0 compatibility is needed
use Apache2::compat ();
preload all mp2 modules
use ModPerl::MethodLookup;
ModPerl::MethodLookup::preload_all_modules();
use ModPerl::Util (); #for CORE::GLOBAL::exit
use Apache2::RequestRec ();
use Apache2::RequestIO ();
use Apache2::RequestUtil ();
use Apache2::ServerRec ();
use Apache2::ServerUtil ();
use Apache2::Connection ();
use Apache2::Log ();
use APR::Table ();
use ModPerl::Registry ();
use Apache2::Const -compile => ':common';
use APR::Const -compile => ':common';
use CGI ();
1;
<<<ENDE>>>
Hat vielleicht noch jemand eine Idee, wie und wo ich das Modul Apache::StatINC richtig einbinden kann?
Mille Grazie!
Johnny
P.S.
Eigentlich wollte ich ja was programmieren - und keinen Server administrieren... <grmplx> SO WHAT!