Bei Verwendung der Session-Technologie zum Verfolgen von Benutzern im System besteht die Standardverarbeitungsmethode von Session darin, die Sitzungsinformationen jedes Benutzers in einer Datei auf dem Webserver aufzuzeichnen und den Pfad der Sitzungsdatendatei über session.save_path zu erstellen in php.ini. Obwohl diese Standardverarbeitungsmethode praktisch ist, weist sie auch Mängel auf. Dies wird die Ausführungseffizienz des Systems erheblich beeinträchtigen. Der Hauptgrund dafür ist, dass der eigene Sitzungsmechanismus nicht maschinenübergreifend verwendet werden kann, da bei Systemen mit relativ großem Zugriffsvolumen normalerweise mehrere Server für die gleichzeitige Verarbeitung verwendet werden. Wenn jeder Server die Sitzung separat verarbeitet, kann der Zweck der Benutzerverfolgung nicht erreicht werden. Zu diesem Zeitpunkt müssen Sie die Art und Weise ändern, wie Sitzungen verarbeitet werden. Sie können Sitzungsinformationen mithilfe der Freigabetechnologie auf anderen Servern speichern oder eine Datenbank zum Speichern von Sitzungsinformationen verwenden.
Unabhängig davon, ob Sie eine Datenbank oder eine Freigabetechnologie zum Teilen von Sitzungsinformationen verwenden, ist das Prinzip im Grunde dasselbe und die Standardverarbeitungsmethode wird durch die Funktion session_set_save_handler() in PHP geändert. Geben Sie a an Rückruffunktion zum Anpassen der Verarbeitung. Die Funktion lautet wie folgt:
session_set_save_handler(open, close, read, write, destroy, gc)
Diese Funktion erfordert insgesamt 6 Rückruffunktionen als erforderliche Parameter, die die 6 Prozesse im Sitzungslebenszyklus darstellen. Durch Anpassen jeder Funktion können Sie
festlegenInformationsverarbeitung in jedem Link des Sitzungslebenszyklus.
回调函数 | 描 述 |
open | 运行 session_start()时执行。该含税需要声明两个参数,系统会自动将php.ini 中的 session.save_path 选项值传递给该函数的第一个参数,将session 名自动传递到第二个参数中。返回 true 则可以继续向下执行。 |
close | 该函数不需要参数,在脚本执行完成或调用 session_write_close()、session_destroy()时被执行,即在所有 Session 操作完成后被执行。如果不需要处理,直接返回 true。 |
read | 在运行 session_start()时执行,因为在开启会话时,会去读取当前 session 数据并写入 $_SESSION 变量。需要声明一个参数,系统会自动将 Session ID 传递给该函数,用于通过 Session ID获取对应的用户数据,返回当前用户的会话信息写入 $_SESSION 变量 |
write | 该函数在脚本结束和对$_SESSION 变量赋值时执行。需要声明两个参数,分别是 Session ID 和串行化后的 session 信息字符串。在对$_SESSION 变量赋值时,就可以通过 Session ID 找到存储的位置,并将信息写入。存储成功后返回 true 并继续向下执行 |
destroy | 在运行session_destroy()时执行,需要声明一个参数,系统会自动将 Session ID 传递给该函数,去删除对应的会话信息。 |
gc | 在垃圾回收程序启动时执行。需要声明一个参数,系统会将 php.ini 中的 session.gc_maxlifetime 选项值传给该函数,用于删除超过这个时间的 Session 信息。返回 true 则可以继续向下执行。 |
Hinweis: Beim Ausführen von session_start() öffnen (die Sitzung starten), lesen (die aktuellen Sitzungsdaten lesen und in $_SESSION schreiben) und gc (Müll bereinigen) werden jeweils ausgeführt)-Operation, alle Operationen auf $_SESSION im Skript rufen diese Rückruffunktionen nicht auf. Wenn Sie die Funktion session_destroy() aufrufen, führen Sie destroy aus, um die aktuelle Sitzung zu zerstören (normalerweise werden die Antwortdatensätze oder Dateien gelöscht), aber diese Rückruffunktion zerstört zu diesem Zeitpunkt nur die Sitzungsdaten, wenn
$_SESSION Variable hat immer noch einen Wert, aber dieser Wert wird nach dem Schließen nicht zurückgeschrieben. Führen Sie das Schreiben und Schließen aus, wenn Sie die Funktionsession_wrte_close() aufrufen, und speichern Sie $_SESSION im Speicher. Wenn es nicht manuell verwendet wird, wird es am Ende des Skripts automatisch ausgeführt.
Das obige ist der detaillierte Inhalt vonAnweisungen zur Informationsverarbeitung für eine benutzerdefinierte PHP-Sitzung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!