Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 2e9d34aa

Von Moritz Bunkus vor mehr als 14 Jahren hinzugefügt

  • ID 2e9d34aa27890e304e9e4aadcddec262b76554bb
  • Vorgänger 0ea2ddad
  • Nachfolger 7bd555b6

FastCGI-Dokumentation erweitert

Unterschiede anzeigen:

doc/INSTALL.fcgi
63 63
    Allow from All
64 64
  </Directory>
65 65

  
66
  <DirectoryMatch //.*/users>
66
  <DirectoryMatch /path/to/lx-office-erp/users>
67 67
    Order Deny,Allow
68 68
    Deny from All
69 69
  </DirectoryMatch>
70 70

  
71 71

  
72
Variante 1 startet einfach jeden Lx-Office Request als fcgi Prozess. F?r sehr
73
gro?e Installationen ist das die schnellste Version, ben?tigt aber sehr viel
74
Arbeitspseicher (ca. 2GB).
72
Variante 1 startet einfach jeden Lx-Office Request als fcgi
73
Prozess. F?r sehr gro?e Installationen ist das die schnellste Version,
74
ben?tigt aber sehr viel Arbeitspseicher: wurden alle Module mindestens
75
einmal aufgerufen, so werden dauerhaft ca. 2GB pro Installation
76
belegt.
75 77

  
76 78
Variante 2 startet nur einen zentralen Dispatcher und lenkt alle Scripte auf
77 79
diesen. Dadurch dass zur Laufzeit ?fter mal Scripte neu geladen werden gibt es
78
hier kleine Performance Einbu?en.
80
hier kleine Performance Einbu?en. Trotzdem ist diese Variante vorzuziehen.
79 81

  
80 82

  
81 83
=head2 Entwicklungsaspekte
......
89 91

  
90 92
Es ist m?glich die gleiche Lx-Office Version parallel unter cgi und fastcgi zu
91 93
betreiben. Da nimmt man Variante 2 wie oben beschrieben, und ?ndert die
92
MatchAlias Zeile auf eine andere URL, und l?sst alle anderen URLs auch
94
AliasMatch Zeile auf eine andere URL, und l?sst alle anderen URLs auch
93 95
weiterleiten:
94 96

  
97
  # Zugriff ohne FastCGI
98
  Alias /web/path/to/lx-office-erp /path/to/lx-office-erp
95 99

  
100
  # Zugriff mit FastCGI:
96 101
  AliasMatch ^/web/path/to/lx-office-erp-fcgi/[^/]+\.pl /path/to/lx-office-erp/dispatcher.fpl
97
  AliasMatch ^/web/path/to/lx-office-erp-fcgi/(.*) /path/to/lx-office-erp/$1
102
  Alias       /web/path/to/lx-office-erp-fcgi/          /path/to/lx-office-erp/
98 103

  
99 104
Dann ist unter C</web/path/to/lx-office-erp/> die normale Version erreichbar,
100 105
und unter C</web/opath/to/lx-office-erp-fcgi/> die FastCGI Version.
......
103 108
dass das Programm in einer Endlosschleife l?uft, m?ssen folgende Aspekte
104 109
geachtet werden:
105 110

  
106
=head3 C<warn>, C<die>, C<exit>, C<carp>, C<confess>
111
=head3 Programmende und Ausnahmen: C<warn>, C<die>, C<exit>, C<carp>, C<confess>
107 112

  
108
Fehler die normalerweise dass Programm sofort beenden (fatale Fehler) werden
109
mit dem FastCGI Dispatcher abgefangen, um das Programm amLaufen zu halten. Man
113
Fehler, die dass Programm normalerweise sofort beenden (fatale Fehler), werden
114
mit dem FastCGI Dispatcher abgefangen, um das Programm am Laufen zu halten. Man
110 115
kann mit C<die>, C<confess> oder C<carp> Fehler ausgeben, die dann vom Dispatcher
111 116
angezeigt werden. Die Lx-Office eigene C<$::form->error()> tut im Prinzip das
112 117
Gleiche, mit ein paar Extraoptionen. C<warn> und C<exit> hingegen werden nicht
113 118
abgefangen. C<warn> wird direkt nach STDERR, also in Server Log eine Nachricht
114 119
schreiben, und C<exit> wird die Ausf?hrung beenden.
115 120

  
116
Prinzipiell ist es ein Beinbruch, wenn sich der Prozess beendet, fcgi wird ihn
117
sofort neu starten, allerdings sollte das die Ausnahme sein. Quintessenz: Bitte
118
kein C<warn> oder C<exit> benutzen, alle anderen Excepionmechanismen sind ok.
121
Prinzipiell ist es kein Beinbruch, wenn sich der Prozess beendet, fcgi wird ihn
122
sofort neu starten. Allerdings sollte das die Ausnahme sein. Quintessenz: Bitte
123
kein C<warn> oder C<exit> benutzen, alle anderen Exceptionmechanismen sind ok.
119 124

  
120 125
=head3 Globale Variablen
121 126

  
122
Um zu vermeiden, dass Informationen von einem Request in einen anderen gelangen
127
Um zu vermeiden, dass Informationen von einem Request in einen anderen gelangen,
123 128
m?ssen alle globalen Variablen vor einem Request sauber initialisiert werden.
124 129
Das ist besonders wichtig im C<$::cgi> und C<$::auth> Objekt, weil diese nicht
125 130
gel?scht werden pro Instanz, sondern persistent gehalten werden.

Auch abrufbar als: Unified diff