From 63a9044638de7ad57914c2c4140713c8db0d3b44 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Sven=20Sch=C3=B6ling?= Date: Fri, 29 Jan 2010 13:51:33 +0100 Subject: [PATCH] FastCGI Dokumentation erweitert. --- doc/INSTALL.fcgi | 40 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/doc/INSTALL.fcgi b/doc/INSTALL.fcgi index b326ffcc7..3f3fdeae7 100644 --- a/doc/INSTALL.fcgi +++ b/doc/INSTALL.fcgi @@ -78,7 +78,7 @@ diesen. Dadurch dass zur Laufzeit hier kleine Performance Einbußen. -=head2 Mögliche Fallstricke +=head2 Entwicklungsaspekte Die AddHandler Direktive vom Apache ist entgegen der Dokumentation anscheinend nicht lokal auf das Verzeichnis beschränkt sondern global im @@ -87,8 +87,46 @@ vhost. Wenn Änderungen in der Konfiguration von Lx-Office gemacht werden, oder wenn Templates editiert werden muss der Server neu gestartet werden. +Es ist möglich die gleiche Lx-Office Version parallel unter cgi und fastcgi zu +betreiben. Da nimmt man Variante 2 wie oben beschrieben, und ändert die +MatchAlias Zeile auf eine andere URL, und lässt alle anderen URLs auch +weiterleiten: + AliasMatch ^/web/path/to/lx-office-erp-fcgi/[^/]+\.pl /path/to/lx-office-erp/dispatcher.fpl + AliasMatch ^/web/path/to/lx-office-erp-fcgi/(.*) /path/to/lx-office-erp/$1 + +Dann ist unter C die normale Version erreichbar, +und unter C die FastCGI Version. + +Bei der Entwicklung für FastCGI ist auf ein paar Fallstricke zu achten. Dadurch +dass das Programm in einer Endlosschleife läuft, müssen folgende Aspekte +geachtet werden: + +=head3 C, C, C, C, C + +Fehler die normalerweise dass Programm sofort beenden (fatale Fehler) werden +mit dem FastCGI Dispatcher abgefangen, um das Programm amLaufen zu halten. Man +kann mit C, C oder C Fehler ausgeben, die dann vom Dispatcher +angezeigt werden. Die Lx-Office eigene C<$::form->error()> tut im Prinzip das +Gleiche, mit ein paar Extraoptionen. C und C hingegen werden nicht +abgefangen. C wird direkt nach STDERR, also in Server Log eine Nachricht +schreiben, und C wird die Ausführung beenden. + +Prinzipiell ist es ein Beinbruch, wenn sich der Prozess beendet, fcgi wird ihn +sofort neu starten, allerdings sollte das die Ausnahme sein. Quintessenz: Bitte +kein C oder C benutzen, alle anderen Excepionmechanismen sind ok. + +=head3 Globale Variablen + +Um zu vermeiden, dass Informationen von einem Request in einen anderen gelangen +müssen alle globalen Variablen vor einem Request sauber initialisiert werden. +Das ist besonders wichtig im C<$::cgi> und C<$::auth> Objekt, weil diese nicht +gelöscht werden pro Instanz, sondern persistent gehalten werden. + +Datenbankverbindungen wird noch ein Guide verfasst werden, wie man sichergeht, +dass man die richtige erwischt. + =head2 Performance und Statistiken Die kritischen Pfade des Programms sind die Belegmasken, und unter diesen ganz -- 2.20.1