2016-07-17 2 views
0

Mein Verständnis ist, dass der Apache-Server, wenn eine Anfrage empfangen wird, einen neuen Prozess forkiert und das entsprechende PHP-Skript/die entsprechende Datei aufruft.Was passiert mit dem Apache-Prozess, wenn eine PHP-Sitzung abläuft?

Was passiert, wenn die vom php-Skript gestartete Sitzung in diesem neuen, von Apache gespaltenen Prozess abgelaufen ist oder der Benutzer sie durch Schließen des Browsers beendet hat? Es gibt einen exit(); Anruf nach Fehlern oder Abmeldungen, die ich benutze, aber ich bin unsicher, was es auf der Server/OS-Ebene tut.

Killt Apache den Prozess? Wie funktioniert die Kommunikation zwischen Apache und PHP?

+0

session_destroy() meinst du das? –

+0

nein. Ich beziehe mich auf die Kommunikation zwischen Apache und PHP. Ein neuer Prozess/Thread wird erzeugt, aber was oder wie behandelt php/apache den Umgang mit diesem neuen Prozess nach dem Ende der Sitzung? – marc

Antwort

2

Mein Verständnis ist, dass der Apache-Server, wenn eine Anfrage empfangen wird, einen neuen Prozess forkiert und das entsprechende PHP-Skript/die entsprechende Datei aufruft.

Dies ist nur der Fall für PHP-CGI-Konfigurationen, die nicht typisch sind. Die meisten Implementierungen verwenden die mod_php SAPI, die PHP-Skripte innerhalb des Apache-Prozesses ausführt.

Was passiert, wenn die vom php-Skript gestartete Sitzung in diesem neuen, von Apache geforsteten Prozess abgelaufen ist oder der Benutzer sie durch Schließen des Browsers beendet hat?

Nichts.

In PHP-CGI-Konfigurationen wird der Prozess beendet, sobald das Skript eine Antwort generiert. In mod_php-Konfigurationen kehrt der Apache-Prozess nach Ende des Skripts erneut auf neue Anfragen zu.

Die Lebensdauer der Sitzungen ist nicht an einen bestimmten Prozess gebunden. Denken Sie daran, dass Sitzungen als Dateien im temporären Verzeichnis Ihres Systems gespeichert werden - PHP überprüft dieses Verzeichnis regelmäßig auf abgelaufene Sitzungen und entfernt sie entsprechend.

Schließen Sie Ihren Browser nicht nicht entfernen Sie die Sitzung aus dem temporären Verzeichnis des Servers. Dies kann dazu führen, dass Ihr Browser die mit der Sitzung verbundenen Cookies verwirft, sodass die Sitzung nicht mehr verwendet wird, der Server jedoch nicht darüber informiert wird.

+0

Wenn Apache die Anfrage erhält, spawnt es einen neuen Thread? oder ein neuer Prozess? Wie wird dieser Prozess über das neue Skript informiert, das ausgeführt werden muss? Vielen Dank ! – marc

+0

Weder. Die Anforderung wird im vorhandenen Thread oder Prozess bearbeitet, der die Anforderung erhalten hat. – duskwuff