|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : novembre 2006 Messages : 13 ![]() |
Bonjour à vous,
Ma question peut paraître étrange pour certains, mais je tente de comprendre un peu mieux le fonctionnement des sessions au niveau du stockage des données sur le serveur. Bien que j'ai toujours utilisé les sessions sans vraiment savoir comment elles fonctionnaient (en dehors du principe), aujourd'hui je comprends comment et où les données sont stockées, et donc comment elles peuvent véhiculer à travers les différentes pages. Ce que je comprends beaucoup moins, c'est pourquoi le fichier de session est ré-écrit à chaque actualisation de la page, et ce même si les variables de session n'ont pas été modifiées. Je donne un exemple: Code :
Une petite explication est la bienvenue. Merci d'avance. |
||
|
|
00
|
|
|
#2 |
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 991 ![]() |
J'imagine qu'il est plus coûteux en terme de cycles de vérifier que les données de session n'ont pas changés que d'écrire directement dans le fichier tout simplement.
Sinon, une explication possible pourrait être qu'apache se sert de la date de dernière modification du fichier de session pour déterminer une expiration mais je ne saurais l'affirmer. Peut être qu'un expert PHP comme Julien Pauli pourrait répondre...
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
|
00
|
|
|
#3 | ||
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 727 ![]() |
Citation:
Je n'ai aucune idée, et en savoir plus m'intéresse aussi. Citation:
Ici il n'y aurait donc aucune réécriture du contenu. Une réécriture des données aurait alors lieu que s'il y a modification d'au moins une variable de session. Pure hypothèse bien sûr. Je remarque cependant que si on opte (pour exemple) de gérer les sessions dans sa Bdd grâce à la fonction session_set_save_handler(), il me semble qu'on a pas trop le choix de réinsérer les données. Ceci dit, il me semble qu'une Bdd comme MySQL serait capable de détecter si les données sont très exactement les mêmes, et dans telle cas l'UPDATE ne se ferait pas (la valeur de retour serait FALSE). Ceci finalement aurait le même comportement de l'hypothèse précédente. Ceci dit, normalement il doit quand même avoir la date de dernière mise à jour qui doit changer, donc les données ne devraient pas être les mêmes. Mais on peu toujours procéder en 2 requêtes SQL : - La 1ère pour modifier la date - La 2ème pour la valeur (les données de session, sérialisées entre autres). Et là, si les données sont les mêmes, le UPDATE n'aurait pas lieu. (je ne sais si j'ai été clair). Mise à part ça, j'ai jamais lu nulle part une technique (en Php) permettant de savoir si une partie du contenu d'un fichier à été modifié (mise à part une sauvegarde et faire une comparaison). Il y a bien la date de dernière modification, mais ça ne dit pas s'il y a eu réellement modification. Intéressant en tout cas.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
||
|
|
00
|
|
|
#4 | |
|
Membre Expert
![]() Baptiste ROUSSELÉtudiant Inscription : janvier 2011 Messages : 812 ![]() |
Citation:
__________________
|
|
|
|
00
|
|
|
#5 | |
|
En attente de confirmation mail
![]() Inscription : juin 2002 Messages : 6 164 ![]() |
Ça figure dans la doc :
Citation:
Sinon il suffit de lire les sources (ext/session/mod_files.c, fonction ps_files_cleanup_dir) : Code C :
(now - sbuf.st_mtime) > maxlifetime) { Code :
time_t st_mtime; /* Heure dernière modification */
|
|
|
|
10
|
Copyright © 2000-2012 - www.developpez.com