|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
|
Invité de passage
![]() Inscription : mars 2005 Messages : 6 ![]() |
Bonjour à tous.
Je me casse la tête sur un problème concernant la durée de vie de mes sessions. Mon but est de passer des 24 minutes fixées par défaut par session.gc_maxlifetime à 4 heures. Le site étant hébergé en mutualisé, je n'ai pas la possibilité de changer php.ini. 1ère tentative : Code :
2ème tentative : Code :
En local, aucun problème, sur le serveur mutualisé, la directive session_set_save_handler me renvoit false... Je pense que j'ai essayé les deux alternatives possibles pour contourner le fait de ne pas pouvoir toucher à php.ini... Le plus énervant est que cela marche en local et pas sur le serveur mutualisé. Il pourrait sans doute s'agir de sa version de PHP... Je vous donne les infos de ce serveur, si quelqu'un a une suggestion, je suis preneur ! Merci à tous, dbass. Code :
|
||||||
|
|
00
|
|
|
#2 |
|
Invité de passage
![]() Inscription : mars 2005 Messages : 6 ![]() |
Personne ?
Je comprends vraiment pas le problème... Pour l'instant, j'ai fait une rustine avec un js qui reload la page avant les 24 minutes fatidiques mais c'est bourrin... |
|
|
00
|
|
|
#3 | ||
|
Membre actif
![]() Inscription : mai 2004 Messages : 202 ![]() |
Moi je declare la date de dernier acces dans une variable de session et à chaque foisn que j'accede a ma page je remet à jour cette variable.
Si elle n'as pas été mise à jour pdt un temp x défini, la varible de session est detruite. Initialisation de la variable : Test du temps d inactivité : Code :
|
||
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Inscription : mars 2005 Messages : 6 ![]() |
Bien sûr, le problème est que si le garbage collector passe avant le timeout que tu définis, tes variables de sessions sont effacées... càd pour tuot timeout supérieur à session.gc_maxlife... paramètre que j'ai modifié avec ini_set pour contourner ce problème mais il n'est manifestement pas pris en compte sur le serveur mutualisé.
Et pourquoi le session.save_path n'est-il pas non plus opérant ? Je ne vois pas ce que je rate... Y a t-il des paramètres Apache ou PHP qui empêchent ou court-circuitent les ini_set ? Je sais que le gros problème est que déjà les ini_set ne sont valable que pendant l'exécution du script donc je pensais que c'est pour cela que ini_set('session.gc_maxlifetime','grosse valeur') était ignoré mais non, en l'appelant bien avant session_start(), cela marche très bien en local. Mais surtout parce qu'en local mon iniset('session.save_path','mon_rep') est bien opérant alors qu'en distant, niet ! Du coup les fichiers de sessions sont je pense encore stocké dans le rep par défaut qui se prend le garbage collector aux intervalles fixés pour ce rep à savoir ces fameuses 24 minutes... Pourquoi est-ce que ma demande de changement de rep pour sauver les 'files' de sessions n'est pas prise en compte sur ce serveur mutualisé ??? grr |
|
|
00
|
|
|
#5 |
|
Membre actif
![]() Inscription : mai 2004 Messages : 202 ![]() |
Pourquoi tu ne pauses pas la question à l'administrateur du serveur mutualisé ???
|
|
|
00
|
|
|
#6 |
|
Membre expérimenté
![]() ![]() Inscription : mars 2005 Messages : 648 ![]() |
J'ai eu le même problème, et j'ai finalement programmé mon propre système de session...
Si tu trouve une solution, je serais ravi de l'apprendre. Et si jamais tu pense créer un compteur de visiteurs en ligne sur ton site, dit toi que pour ce faire, ca créer un 2ieme système de session, donc aussi bien en utiliser qu'un seul ;p |
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : mars 2005 Messages : 6 ![]() |
J'ai essayé une gestion de session mysql mais le php du mutualisé me renvoie false quand je veux debrayer en 'user' la gestion des sessions. Après, je pourrais effectivement recréer entièrement le méchanisme des sessions, mais qand même... Ca devrait marcher !
Bref, pour l'instant, je contourne le problème avec un javascript qui reload le fichier toutes les 20 minutes. |
|
|
00
|
|
|
#8 |
|
Membre émérite
![]() Inscription : février 2006 Messages : 840 ![]() |
Essayes avec session_regenerate_id ( true ) ; ???
En passant comme paramètre true, tu effaces l'ancien fichier de session pour en créer un nouveau, c'est un peu lourd mais cela pourrait tromper l'ennemi.
__________________
Consultant idéaliste. |
|
|
00
|
|
|
#9 |
|
Invité de passage
![]() Inscription : mars 2005 Messages : 6 ![]() |
bonne idée je vais tester !
merci ! |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com