Wie Arbeitet der Webserver?

Alles, was den Apache betrifft, kann hier besprochen werden.

Wie Arbeitet der Webserver?

Postby guybrush82 » 02. December 2003 14:12

Hallo Ihr da draussen.

Ich arbeite schon seit längerem mit vielen verschiedenen Webservern. Nur eine Frage hat mir bisher noch keiner beantwortet:

WIE GENAU ARBEITET DER WEBSERVER?

-> wie ist der Informationsfluss?
-> was wird intern von wo nach wo geleitet?
-> wovon ist die Performence abhängig?

Der User schickt einen Request an den Server. Bisher hat man mir nur erklären können, dass dieser dann die Daten verrbeitet (mit PHP oder ASP oder sonst was), und dann die generierte Seite zurückliefert.

Das läuchtet mir ja ein.. Aber was ist, wenn ich nur ein HTML Dokument anfordere?
-> Wird es dann vom Interpreter verarbeitet, oder leitet der Webserver diese Datei ohne "Bearbeitung" zurück?
-> Wird die Datei vor dem "verarbeiten" auf <?php?> oder <%asp%> oder sonstige tags überprüft? (hat es einen Sinn, "taglose" Dateien an den Interpreter zu schicken? -> Hätte es evtl. Auswirkungen auf Geschwindigkeit?)
-> Warum wird ständig empfohlen, statische Seiten nur in HTML Dateien zu halten, statt sie ebenfalls im (bsp) PHP format zu speichen? Liegts an der Geschwindigkeit, oder einfach nur an der Übersicht?
-> Sollte es solche Regeln geben, sind sie dann für jeden Webserver (Bsp. IIS) gleich, oder kann man diese Regeln (Plattformunabhängig) manipulieren?

Nach reichlicher Überlegung und Diskussion mit einigen Kollegen konnten wir diese Fragen nicht mit logischem herangehen lösen? Drum dieser Post...

Ich hoffe, mir kann jemand weiter helfen.

Thomas
Wie nennt man nen Programmierer auf dem Nordpol? -> ASCIIMO !!!
User avatar
guybrush82
 
Posts: 28
Joined: 02. December 2003 13:46
Location: Erfurt

Apache Erklärung "beginner" ;)

Postby nemesis » 02. December 2003 16:16

Der "Informationsfluss" ist doch ziemlich kompliziert aufgebaut, für 100% Angaben ist es besser du ließt dir die Angaben über die API durch.
Ist aber meines erachtens eher nur für Programmierer und Leute die zuviel Zeit haben und sich bis aufs kleinste Detail dafür interessieren sinnvoll.

Zur "einfacheren" Erklärung:
Der Apache hat mehrer Kindprozesse die möglichst parallel (im 2er Apache) die angegeben Ports und IP-Adressen auf Anfragen hin "belauschen". Waten also auf eine gültige http-Anfrage (http ist das Protokoll, wie etwas zu ablaufen/funktionieren soll(te) ;))
Danach wird die Anfrage intern im Apache noch durch eventuell geladene Module in der httpd.conf gefiltert bzw. umgeleitet. modrewrite, modproxy, spellchenge usw. gibt einige!
Wenn in der Konfigurationsdatei bei bestimmten Dateiendungen eine "Regel" vorliegt, z.B. für php, cgi Scripte usw. wo auch extra Ordneroptionen festgelegt werden können (cgi-bin) und <Directory> Angaben. Wird die entsprechend aufgerufene Datei zuerst an den Parser (php, perl, java, phyton usw.) weitergereicht. Bei "dynamisch" geladenen Erweiterungen (mod_perl, mod_php usw.)für die verschiedenen Scriptsprachen geht es "etwas" schneller bei der Ausgabe des geparsten Dokumentes.
Achja, es gibt noch SSI (Server Side Includes) bzw. Extended SSI, das ist eine im kleinen Funktionsumfang php ähnliche Scriptsprache (nur älter ;)) die im Apache schon integriert ist. Vielleicht sagt dir .shtml etwas mehr.
Der parser der jeweiligen Scriptsprache gibt das Ergebnis (den Output) an Apache wieder zurück und wird dann durch Apache an den Clienten gesendet.

Zur Performancefrage behandle ich erstmal deine anderen Fragen.
Das läuchtet mir ja ein.. Aber was ist, wenn ich nur ein HTML Dokument anfordere?
-> Wird es dann vom Interpreter verarbeitet, oder leitet der Webserver diese Datei ohne "Bearbeitung" zurück?

Wenn du ein .html (html hat soviele mögliche Dateierweiterungsnamen, wichtig ist nur der HTML-Inhalt) Datei über den Apache aufrufst, wird es i.d.R. nicht über einen Parser geleitet. Solange du in der Konfiguration von Apache ihn nicht so einstellst das er alle, oder andere als Standard festgelegte Dateiendungen Parsen lassen willst, sender er nur den normalen Inhalt der Datei (Fehler in der "Verarbeitung" ausgenommen ;)).

-> Wird die Datei vor dem "verarbeiten" auf <?php?> oder <%asp%> oder sonstige tags überprüft? (hat es einen Sinn, "taglose" Dateien an den Interpreter zu schicken? -> Hätte es evtl. Auswirkungen auf Geschwindigkeit?)
Dem Apache ist es egal in welcher Scriptsprache ein Dokument geschrieben wurde, und auch ob da Tags für die Sprache enthalten sind. Er leitet die Datei nur zum Parsen (sofern angegeben in der config..) an den Parser weiter. Falls keine Tags für den Parser vorhanden sind, wird sie so wie sie ist zurück an Apache weitergereicht.
Es ist also mehr als verschwendung nur so zum Spass alles über einen Parser zu schicken. Das ist somit auch die Beantwortung zu deiner nächsten Frage:
> Warum wird ständig empfohlen, statische Seiten nur in HTML Dateien zu halten, statt sie ebenfalls im (bsp) PHP format zu speichen? Liegts an der Geschwindigkeit, oder einfach nur an der Übersicht?
Es ist schlechter für die Performance etwas Sinnlos über einen Parser laufen zu lassen. Wo keine "Dynamik" von einer Scriptsprache benötigt wird, sollte man sie auch nicht durch Biegen und Brechen sie hinzufügen/sinnlos Parsen lassen.

-> Sollte es solche Regeln geben, sind sie dann für jeden Webserver (Bsp. IIS) gleich, oder kann man diese Regeln (Plattformunabhängig) manipulieren?

Bin mir nicht sicher wie das beim IIS intern gelöst wurde. Es sollten aber die Allgemeinen Empfehlungen wie bei Apache auch auf ihn zutreffen. Microsoft will ja nicht noch schlechter dastehen als sie eh schon sind ;)

So Kay, falls du das hier ließt, wie habe ich mich gemacht? :)

Und guybrush82, falls du weiter Infos dazu wünscht, kauf dir am besten ein Buch zum Apache. Da stehen auch mehr infos drinnen als ich hier nur so "kurz" aufzählen kann.

Gruss, nemesis
Ubuntu 8.04 | SMP P3 1.4 GHz | 6 GByte RegECC | 74 GByte Seagate 15k5 system | 3Ware 9550SXU-4LP with 4x 500 GByte Seagate ES2 Raid 10 data | StoreCase DE400 | PX-230A | Intel Pro/1000MT Dual PCI-X
User avatar
nemesis
AF Moderator
 
Posts: 999
Joined: 29. December 2002 13:14
Location: Ingolstadt

Postby guybrush82 » 02. December 2003 16:52

Vielen Dank. Ich bedank mich wirklich recht herzlich. Ne bessere Antwort hätt ich glaub ich nicht kriegen können.

Tschöö. Thomas :-)
Wie nennt man nen Programmierer auf dem Nordpol? -> ASCIIMO !!!
User avatar
guybrush82
 
Posts: 28
Joined: 02. December 2003 13:46
Location: Erfurt


Return to Apache

Who is online

Users browsing this forum: No registered users and 7 guests