Es ist nicht PHP, sondern Webserver, der Anfragen bearbeitet. PHP läuft nicht von selbst. Wenn die Webseite PHP-Code enthält, wird diese Anfrage durch das entsprechende PHP-SAPI-Modul an PHP delegiert. Es gibt Multi-Thread-, Multi-Prozess-Webserver und man kann sich sogar einen einzelnen Prozess-Webserver vorstellen, so dass es rein Webserver-abhängig ist, ob ein separater Thread oder Prozess für eine Anfrage erstellt wird.
In vielen Orten der PHP-Dokumentation Sie Zeilen wie diese auf umask()
treffen können:
Vermeiden Sie mit dieser Funktion in Multithreaded Webservern. Es ist besser, ändern Sie die Dateiberechtigungen mit Chmod() nach dem Erstellen der Datei. Die Verwendung von umask() kann zu einem unerwarteten Verhalten von gleichzeitig ausgeführten Skripten und dem Webserver führen, da alle die gleiche Umask verwenden.
... wie lange bleibt dieser Thread am Leben? Werden in diesem Thread alle statischen Variablen ordnungsgemäß verwaltet? (wie eine DB-Verbindung)
Sie klingen wie eins mit C++ Hintergrund. Sie meinen wahrscheinlich globale Variablen in PHP. PHP hat eingebaute Unterstützung für Datenbankverbindungen und Sie sollten sich über solche Dinge keine Sorgen machen. Sie sind Implementierungsdetails. Die meisten SAPIs bieten persistente Datenbankverbindungen, aber dies ist nur für Ihre Neugier. Permanente Verbindungen werden pro Prozess erstellt, der Anforderungen verarbeitet. In diesem Fall werden sie eher durch einen Prozess als durch einen Thread verwaltet.
Wenn dieser Thread zerstört wird, ruft es alle Destruktoren auf?
In PHP werden Destruktoren aufgerufen, wenn das Skript die Ausführung beendet. Aus Sicht des PHP-Entwicklers spielt es keine Rolle, wo das Skript lebt.
Siehe auch [diese Frage] (http://stackoverflow.com/questions/14183397/php-request-lifecycle) (nicht genau ein dupe zu schließen gegen) –
Fragen Sie nach 'mod_php' oder' php' selbst ? – kojiro