Heim  >  Artikel  >  Backend-Entwicklung  >  Analyse des SESSION-Mechanismus von PHP

Analyse des SESSION-Mechanismus von PHP

小云云
小云云Original
2017-11-08 15:10:121706Durchsuche

Der Standardmechanismus verwendet Festplattendateien, um PHP-Sitzungen zu implementieren. php.ini-Konfiguration: session.save_handler = files

1. session_start()

A. Es besteht eine gewisse Wahrscheinlichkeit, dass der Sitzungsmechanismus startet Die Sitzung wird in Dateien gespeichert.

PHPs eigene Speicherbereinigung erfordert das Löschen von Dateien.

Bei einigen Systemen handelt es sich jedoch um eine Sitzung .gc_probability = 0, was bedeutet, dass die Wahrscheinlichkeit 0 ist, die Speicherbereinigung jedoch über das Cron-Skript implementiert wird.

session.gc_probability =1
session.gc_divisor =1000
session.gc_maxlifetime =1440//过期时间 默认24分钟
//概率是 session.gc_probability/session.gc_divisor 结果 1/1000,
//不建议设置过小,因为session的垃圾回收,是需要检查每个文件是否过期的。
session.save_path =//好像不同的系统默认不一样,有一种设置是 “N;/path”
//这是随机分级存储,这个样的话,垃圾回收将不起作用,需要自己写脚本

B. Die Sitzung ermittelt, ob derzeit $_COOKIE[session_name()] vorhanden ist; dieser Wert kann sein gefunden aus php.ini

C. Wenn es nicht existiert, wird eine session_id generiert und dann wird die generierte session_id als COOKIE-Wert an den Client übergeben Beachten Sie, dass dieser Schritt die Operation „setcookie()“ im Header ausführt Wenn Sie diese Funktion verwenden, kann sie nicht ausgegeben werden, bevor die Ausgabe erfolgt.
session.name = PHPSESSID //默认值PHPSESSID

D. Wenn vorhanden, dann session_id =$_COOKIE[session_name];

Gehen Sie dann zu dem durch session.save_path angegebenen Ordner, um die Datei mit dem Namen „SESS_“.session_id zu finden () Datei.

Lesen Sie den Inhalt der Datei, deserialisieren Sie sie und fügen Sie sie dann in $_SESSION ein
setcookie(session_name(),
session_id(),
session.cookie_lifetime,//默认0
session.cookie_path,//默认’/’当前程序跟目录下都有效
session.cookie_domain,//默认为空
)

2 Weisen Sie $_SESSION einen Wert zu

Zum Beispiel: Fügen Sie einen neuen Wert hinzu: $_SESSION['test'] ='blah'; Dann wird dieser $_SESSION nur im Speicher beibehalten. Wenn die Skriptausführung endet, schreibt

den Wert von $_SESSION in den von angegebenen Ordner session_id und schließt es dann. Zu diesem Zeitpunkt ist es möglich, Vorgänge zum Ändern der session_id durchzuführen, z. B. das Löschen einer alten session_id und das Generieren einer neuen session_id Benutzerdefinierte Sitzungsvorgänge und Rollenkonvertierung,

Zum Beispiel hat ein anonymer Benutzer von Drupal eine SITZUNG, wenn er sich anmeldet, muss er eine neue Sitzungs-ID verwenden

Das obige ist der detaillierte Inhalt vonAnalyse des SESSION-Mechanismus von PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn