|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre chevronné
![]() Ingénieur développement logiciels Inscription : juillet 2004 Messages : 817 ![]() |
Bonjour,
Voila, je cherche à recuperer une session PHP en lisant le fichier associé. J'ai donc fait : Code :
Warning: unserialize() failed at offset 0 of 470 bytes Comment proceder ? (la conf de mon serveur est celle par defaut, ou presque) |
||
|
|
00
|
|
|
#2 |
|
Membre régulier
![]() Inscription : juin 2007 Messages : 89 ![]() |
Bonjour,
il ne me semble pas que ce soit possible ce que tu essaye de faire. les fonctions serialize/unserialize n'agissent que sur une variable à la fois, alors qu'un fichier de session comporte plusieurs variables. Donc incompatibilité. Si tu as besoin de personnaliser la gestion des sessions il faut que tu gère toi même les sessions en créant les fonctions adéquat: http://fr3.php.net/manual/fr/functio...ve-handler.php |
|
|
00
|
|
|
#3 |
|
Membre régulier
![]() |
Tu peux toujours coder le déserialiseur toi même, ça doit pas être bien sorcier, par ce que la syntaxe des fichiers de session ressemble à celle des serializes normaux à quelques détails près.
Mais pourquoi as-tu besoin de faire ça ? |
|
|
00
|
|
|
#4 | ||
|
Membre chevronné
![]() Ingénieur développement logiciels Inscription : juillet 2004 Messages : 817 ![]() |
Citation:
Je vais donc de ce pas coder un deserialiseur.... Citation:
Vu que la plusplart du temps on n'a juste besoin des données de session en lecture, je cherche à lire directement le fichier pour ne pas bloquer les acces |
||
|
|
00
|
|
|
#5 |
|
Membre régulier
![]() |
okidoki
Si tu veux mon avis, tu dois pouvoir trouver un moyen de passer le fichier dans un preg_replace qui rend le fichier déserializable par unserialize() |
|
|
00
|
|
|
#6 | ||
|
Membre chevronné
![]() Ingénieur développement logiciels Inscription : juillet 2004 Messages : 817 ![]() |
Oui, c'est ce que je viens de faire et ça marche plutot pas mal...
Code :
1/ les definitions de variables sont separées par "|" 2/ les variables serialisées se terminent par ";", les objets par "}" 3/ j'ai ça dans mon fichier : g_Logged|b:1;!g_SupportLock|g_DebugLevel|i:1536; ça correspond à : - bool g_Logged = true; - int g_DebugLevel = 1536; - ???? pour g_SupportLock ???? Donc que faire pour la variable g_SupportLock ? |
||
|
|
00
|
|
|
#7 |
|
Membre régulier
![]() Inscription : juin 2007 Messages : 89 ![]() |
Sinon pourquoi ne pas fermer la session le plutôt possible avec session_write_close() ?
Tu ouvre ta session, tu récupères les variables dont tu as besoin, tu ferme ta session, puis tu peux lancer tes traitements sans bloquer le reste. |
|
|
00
|
|
|
#8 |
|
Membre chevronné
![]() Ingénieur développement logiciels Inscription : juillet 2004 Messages : 817 ![]() |
Oui, c'est la solution la plus simple, mais on a remarqué certains bugs avec session_write_close sur nos serveurs en PHP 4.1
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com