Schaffung von neuen Prozess für jede Anforderung der web-Seite?
Könnte es eine grundlegende Frage, aber immer wenn ein Benutzer aufrufen einer php-Datei von einem server, tut es erstellen Sie einen neuen Prozess aus, dass die server ?
Ich habe zum Beispiel ein basic-form (sagen wir mal auf index.php), der legt einen text auf eine andere php-Datei.
In dieser php-Datei, die ich drucken Sie das posix_getpid().
Öffnete ich in zwei Registerkarten meine index.php ein ausgefüllt und übermittelt einen text, und ich landete mit
zwei verschiedene pid auf jeder Registerkarte.
Die dazu führen mich zu dem Schluss, dass ein server wahrscheinlich erstellen Sie einen neuen Prozess für jedes script.
Bin ich im Recht ?
Prost !
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich davon aus, dass Sie apache als Webserver.
Wenn eine Anfrage kommt, apache startet einen neuen thread. PHP ist dann aufgerufen, die auf diesem neuen therad, also, warum Sie eine neue Prozess-id jedes mal.
Dies ist natürlich stark vereinfacht.
Empfehle ich die Lektüre diese Artikel für ein tieferes Verständnis.
Edit: Es scheint, dass der Prozess unterscheidet sich zwischen Plattformen. Es funktioniert so, wie ich oben beschrieben habe, auf Windows, sondern mehrere apache-Prozesse ausgeführt werden, die auf Unix.
Gibt es mehrere Möglichkeiten, die Kette web-server mit PHP.
Für
Apache HTTP Server
, ist die beliebteste "mod_php". Dieses Modul ist eigentlich PHP selbst, aber als Modul kompiliert für den web-server, und damit es geladen wird, direkt in es. Da mit mod_php, PHP geladen wird direkt in der Apache wenn Apache behandeln Parallelität mit seiner Worker MPM (mit Gewinde)Und hier ist eine Falle für Dinge wie
setlocale()
.Mit
Nginx
Sie müssen nicht die option zum einbetten von PHP in es. Also, PHP ist völlig außerhalb des web-server mit mehreren PHPprocesses
.Und es ist gut so, denn PHP kann die Dinge auf den unteren Hebel, wie die änderung
locales
Und
setlocale()
ist NICHT thread-safe.