Maison >développement back-end >tutoriel php >Instructions de traitement des informations pour la session personnalisée PHP
Lorsque vous utilisez la technologie Session pour suivre les utilisateurs dans le système, la méthode de traitement par défaut de Session consiste à enregistrer les informations de session de chaque utilisateur dans un fichier sur le serveur Web et à créer le chemin d'accès au fichier de données de session via session.save_path. dans php.ini. Bien que cette méthode de traitement par défaut soit pratique, elle présente également des défauts. Cela affectera sérieusement l’efficacité d’exécution du système. La raison principale est que le mécanisme de session propre ne peut pas être utilisé sur plusieurs machines, car pour les systèmes avec un volume d'accès relativement important, plusieurs serveurs sont généralement utilisés pour le traitement simultané. Si chaque serveur traite la session séparément, l'objectif de suivi des utilisateurs ne peut pas être atteint. À ce stade, vous devez modifier la façon dont la session est traitée. Vous pouvez enregistrer les informations de session sur d'autres serveurs à l'aide de la technologie de partage ou utiliser une base de données pour enregistrer les informations de session.
Que vous utilisiez une base de données ou une technologie de partage pour partager des informations de session, le principe est fondamentalement le même, et la méthode de traitement par défaut est modifiée via la fonction session_set_save_handler() en PHP, spécifiez un fonction de rappel pour personnaliser le traitement. La fonction est la suivante :
session_set_save_handler(open, close, read, write, destroy, gc)
Cette fonction nécessite un total de 6 fonctions de rappel comme paramètres requis, qui représentent les 6 processus du cycle de vie de la session. En personnalisant chaque fonction, vous pouvez définir
.Traitement de l'information dans chaque maillon du cycle de vie de la Session.
回调函数 | 描 述 |
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 则可以继续向下执行。 |
Remarque : lors de l'exécution de session_start(), ouvrez (démarrez la session), lisez (lisez les données de la session en cours et écrivez dans $_SESSION) et gc (nettoyez les déchets) sont exécutés respectivement), toutes les opérations sur $_SESSION dans le script n'appelleront pas ces fonctions de rappel. Lors de l'appel de la fonction session_destroy(), exécutez destroy pour détruire la session en cours (en supprimant généralement les enregistrements ou fichiers correspondants), mais cette fonction de rappel ne détruit que les données de session à ce moment-là, si
<. est la sortie>La variable $_SESSION a toujours une valeur, mais cette valeur ne sera pas réécrite après la fermeture. Exécutez write et close lors de l'appel de la fonctionsession_wrte_close() et enregistrez $_SESSION dans le stockage S'il n'est pas utilisé manuellement, il sera automatiquement exécuté à la fin du script.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!