Heim >Backend-Entwicklung >PHP-Tutorial >Detaillierte Erläuterung des automatischen Recyclingmechanismus der Sitzung in PHP
Unter normalen Umständen können Sie diese Sitzung beenden, indem Sie auf die Schaltfläche „Beenden“ auf der Seite klicken. Wenn der Benutzer jedoch nicht auf die Schaltfläche „Beenden“ klickt, sondern den Browser direkt schließt, die Verbindung zum Internet trennt oder den Computer aufgrund eines Stromausfalls usw. direkt herunterfährt, wird die auf dem Server gespeicherte Sitzungsdatei nicht gelöscht. Obwohl Sie den Browser schließen, müssen Sie eine neue Sitzungs-ID zuweisen, um sich beim nächsten Mal erneut anzumelden. Dies liegt jedoch nur an der Einstellung session.cookie_lifetime = 0 in php.ini zum Festlegen der Sitzungs-ID Das Client-Cookie Das Ablaufdatum in gibt die Lebensdauer des an den Browser gesendeten Cookies in Sekunden an. Ein Wert von 0 bedeutet „bis der Browser geschlossen wird“, und der Standardwert ist 0.
Wenn das System der Sitzung eine Gültigkeitsdauer zuweist, verschwindet die Sitzungs-ID automatisch, unabhängig davon, ob der Browser geöffnet ist oder nicht . Die Sitzungs-ID des Clients verschwindet, die auf dem Server gespeicherte Sitzungsdatei wird jedoch nicht gelöscht. Daher werden serverseitige Sitzungsdateien, auf die nicht durch die Sitzungs-ID verwiesen wird, zu „Müll“. Um zu verhindern, dass diese Junk-Sitzungsdateien das System übermäßig belasten (da Session keine semipermanente Existenz wie Cookie ist), verfügt das System über einen automatischen Reinigungsmechanismus für Sitzungsdateien (Junk-Dateien), die niemals verwendet werden.
Die vom Server gespeicherte Sitzungsdatei ist eine gewöhnliche Textdatei und weist daher die Änderungszeit der Datei auf. Nachdem das „Garbage Collection Program“ gestartet wurde, werden alle abgelaufenen Sitzungsdateien basierend auf der Änderungszeit der Sitzungsdatei gelöscht.
Was ist der Startmechanismus des „Garbage Collection-Programms“?
Das „Garbage-Collection-Programm“ wird gestartet, wenn die session_start()Funktion aufgerufen wird. Eine Website verfügt über mehrere Skripte, und jedes Skript muss die Funktion session_start() verwenden, um eine Sitzung zu starten, und es werden viele Benutzer gleichzeitig darauf zugreifen. Dies führt höchstwahrscheinlich dazu, dass die Funktion session_start() N aufgerufen wird Mal in 1 Sekunde, und es wäre unzumutbar, wenn das „Garbage-Collection-Programm“ jedes Mal gestartet würde. Selbst wenn das „Müllsammelprogramm“ mindestens alle 15 Minuten gestartet wird, wird es mehr als 100 Mal am Tag gereinigt, was zu häufig ist. Legen Sie die Wahrscheinlichkeit fest, mit der das Garbage-Collection-Programm gestartet wird, indem Sie die Optionen session.gc_probability und session.gc_divisor in der Datei php.ini ändern. Das System berechnet die Wahrscheinlichkeit basierend auf der Formel session.gc_probability/session.gc_divisor , zum Beispiel Option session.gc_probability = 1, Option session.gc_divisor = 100, sodass die Wahrscheinlichkeit 1/100 beträgt ist session_start() Das „Garbage-Collection-Programm“ wird erst gestartet, wenn die Funktion 100 Mal aufgerufen wird. Je häufiger auf die Sitzungsseite zugegriffen wird, desto geringer ist daher die Wahrscheinlichkeit, dass sie gestartet wird. Die allgemeine Empfehlung besteht darin, es vor dem Start 1000–5000 Mal aufzurufen: 1/(1000–5000).
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des automatischen Recyclingmechanismus der Sitzung in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!