“Wie die Wurst gemacht wird”-Tour durch die Apache/php/mysql-Interaktion

Lesezeit: 4 Minuten

Benutzer-Avatar
toter Programmierer

Ich habe Probleme zu verstehen, wie der Apache/php/mysql-Stack auf niedriger Ebene funktioniert (einschließlich der Interaktion mit dem Browser). Gibt es irgendwo eine gute Beschreibung (ein Buch, eine Website usw.), die mich durch den gesamten Pfad führt und erklärt, wie beginnend mit einem Browser, der eine URL anfordert, HTTP-Anforderungen gesendet werden, wie Apache mit PHP kommuniziert, wie PHP mit mysql (persistente und nicht-persistente Verbindungen) usw. usw. Ich möchte verstehen, was in dieser Kette worauf wartet, wo Timeouts gehandhabt werden, wie lange Sockets geöffnet und geschlossen werden. Ein Buch, vielleicht ein Artikel? Es gibt eine Menge Dokumentation zu jeder einzelnen Komponente, aber ich kann keine “exemplarische Vorgehensweise” finden.

Die Erklärungen, die ich bisher sehe, sind auf sehr hohem Niveau: Schau, hier ist eine glückliche Kuh, sie geht zur Bovine University, schau – es liegt alles eingeschweißt im Supermarktregal. Was ich brauche, ist die Wursthof-/Schlachthof-/LKW-/Werksbesichtigung, beginnend mit der Kuhbesamung 🙂

[update] Bis heute habe ich keinen besseren Weg gefunden, etwas über diese Dinge zu lernen, als die Quelle zu lesen.

  • Tolle Frage. Ein ASP.NET-Buch, das ich einmal gelesen habe, durchlief die gleiche Art von Übersicht (sie nannten es Application Request Lifecycle), und diese Informationen blieben während der gesamten Entwicklung bei mir.

    – GloryFish

    9. Juni 2009 um 20:20 Uhr

  • Yep, genau das suche ich.

    – toter Programmierer

    10. Juni 2009 um 19:37 Uhr

  • Ich vermute, dass dies eine andere Antwort sein wird, je nachdem, ob Sie mod_php oder FastCGI haben

    – maxwellb

    15. Juli 2009 um 18:45 Uhr

  • Ich kann Ihre Frage nicht verstehen. Können Sie es vielleicht noch einmal mit einer Autoanalogie versuchen?

    – Ryanstack

    16. Juli 2009 um 21:39 Uhr

Benutzer-Avatar
Brent

Beispiel PHP und MySQL hat ein ziemlich grundlegendes Bild des Prozesses, das Sie wahrscheinlich bereits verstehen.

Es ist jedoch eine ziemlich lange Diskussion, mehr in die Tiefe zu gehen als dieses Bild. Ironischerweise können Sie das Buch lesen, das ich gerade verlinkt habe, um eine ziemlich gute Beschreibung zu erhalten. Wenn Sie spezifischere Fragen haben, empfehle ich, neue Fragen für sie zu eröffnen. Genießen!

Ich habe eine Seite gefunden, die zumindest teilweise Inhalte aus dem Buch enthält Fortgeschrittene PHP-Programmierung von George Schloßnagle.

Die Website befindet sich unter: http://php.find-info.ru/php/016/toc.html. Insbesondere der Abschnitt über Der PHP-Request-Lebenszyklus enthält viele wichtige Details, einschließlich einiger Quellcodes und Diagramme.

HAFTUNGSAUSSCHLUSS: IANAL, aber wenn man bedenkt, dass das Buch immer noch bei Amazon gelistet ist, ist es möglich, dass der oben verlinkte Inhalt gegen alle Arten von Codes, Regeln und/oder Gesetzen verstößt. Es ist nicht meine Absicht, illegales oder raubkopiertes Material zu verbreiten oder zu dulden, also entfernen Sie in diesem Fall bitte diese Links.

Sie haben Recht in der Tatsache, dass ganze Bücher darüber geschrieben wurden, wie dies alles zusammenpasst. Hier ist ein Link zu einer “Komplettlösung”, die die Hauptteile berührt.

http://computer.howstuffworks.com/web-server.htm

Ich hoffe es hilft

  • Nun, es ist nicht wirklich. Es ist nur ein Handzeigen auf sehr hohem Niveau.

    – toter Programmierer

    10. Juni 2009 um 19:33 Uhr

Benutzer-Avatar
Dimitrios Mistriotis

Die beste Vorgehensweise wäre, sich ein gutes Buch über den LAMP-Stack zu besorgen.

Eine schnelle Antwort (fragen Sie nach mehr, wenn Sie das Gefühl haben, dass Sie es brauchen) Der Browser kontaktiert den Webserver über das HTTP-Protokoll Der Server generiert ein HTML-Ergebnis (lassen wir es für den Moment außer Acht) und sendet es zurück. Jeder Browser versteht nur das http-Protokoll (für diese Analyse).

Jetzt werden Elemente wie Symbole, Bilder, Javascript usw. einfach vom Apache-Server gelesen und in den Browser “kopiert”. Dasselbe gilt für einfache HTML-Dateien. Der Unterschied liegt in PHP-Dateien (ich vereinfache hier zu stark). Diese werden an das PHP-Modul übergeben und die Antwort (des Moduls) wird an den Browser zurückgesendet.

Das PHP-Modul ist das, was PHP versteht. Sind wir hier zusammen? Wenn ja, dann: Php-Skript kann (oder auch nicht) Daten von einem MySQL-Server benötigen, es muss eine Verbindung herstellen, sie abrufen oder manipulieren usw.

Zusammenfassend: Jede dieser Operationen wird einzeln in einer anderen Prozessebene durchgeführt. Das macht es “einfach”. Fragen Sie nach weiteren Informationen, wenn Sie etwas Spezifischeres wünschen.

Soweit ich weiß, empfängt Apache die Anfrage und ermittelt anhand Ihrer .htaccess- oder Konfigurationsoptionen, was damit zu tun ist. Anschließend leitet es diese Anforderung ggf. zum Parsen an PHP weiter. PHP führt zwei Scans des Codes durch, der erste ist der Pre-Parse, dieser erkennt offensichtliche Fehler und führt Funktionen auf der obersten Ebene aus (ignoriert alle if-Anweisungen, Schleifen, Includes, Evals oder Lambda-basierten Funktionen), bevor die Seite geparst wird wirklich. Alles, was mit Echo gemacht wird, glaube ich, wird als Standard-Out-Stream zurückgegeben und an Apache zurückgegeben. Wenn Apache die Seite zeitlich abschließt, sendet es das Kill-Signal an PHP, das Objekte schließt und bei Bedarf die Fehlermeldungen ausgibt, bevor es beendet wird. Sobald die Seite beendet wird, tendiert Apache zu Kopfzeilen und gibt die Seite zurück.

Ich würde jedoch gerne mehr darüber erfahren. Wenn also jemand es besser erklären kann oder eine Korrektur / Erweiterung zu meiner Antwort hat, würde ich es gerne hören.

1216750cookie-check“Wie die Wurst gemacht wird”-Tour durch die Apache/php/mysql-Interaktion

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy