Bonjour,
J'ai recemment développé une application web en PHP qui permet la gestion des prestations pour un bureau comptable. J'ai un niveau correcte en PHP mais je suis loin d'être un gourou, et je crois que je ne comprend pas bien le fonctionnement technique des sessions mais le problème que je vais décrire ne se pose que sur l'hébergement OVH (aucun soucis en local).
Voici une mise en contexte :
Cette application utilise un système de login simple où une fois connecté et identifié, les infos de mon utilisateurs sont sauvegardée en session (du genre $_SESSION["user"] = ce que je récupère de DB, un ID par exemple).
Ensuite l'utilisateur doit pouvoir effectuer des prestations sur sa liste de clients: il choisi un client, puis une tache qu'il va effectuer sur son dossier, puis lance un chrono pendant qu'il bosse sur le dossier du client hors de l'application. Le lancement du chrono, sa mise en pause et son arrêt se font au moyen d'AJAX, donc rien de bien sorcier.
Le soucis que j'ai, c'est que les données de sessions se vident (automatiquement?) trop rapidement, mes utilisateurs ont besoin de pouvoir rester 3,4 voir 8h sans retoucher à mon application (pendant que le chrono tourne), mais des fois la session s'arrete après seulement 20, 30 minutes, des fois pas de soucis, elle ne s'arrete pas. Ca à l'air complètement aléatoire. En local, je n'ai jamais de problème, la session dure le temps que je l'ai définie..
J'ai besoin que mes utilisateurs restent connectés lorsqu'ils arretent le chrono (car j'ai besoin de leur user_id), mais à cause de ce soucis de session, mon application n'est pas fiable et utilisable correctement…
Pourtant au début de mon script, je défini bien (ne sachant pas passer par le php.ini visiblement):
ini_set('session.gc_maxlifetime', $lifetime);
ini_set('session.cookie_lifetime', $lifetime);
où $lifetime vaut 50000 secondes, soit environs 16h, la durée de session dont j'ai besoin quoi. Mais il me semble que ini_set ne modifie les données que pour le script courant et qu'on que ca n'aie pas de réelles effets?
Je suis sur l'offre hébergement Perso (https://www.ovh.com/fr/hebergement-web/), donc du mutu, et si j'ai bien compris, je ne peux pas toucher au php.ini directement en mutu.
Quels sont mes solutions? Le mutu ne conviendrait donc pas pour application de gestion de temps où j'ai besoin que mes users puissent garder leurs sessions au minimum 8h?
Merci d'avance, et s'il vous faut + d'info n'hésitez pas
Bonjour,
il faut savoir que les session sont par défaut stocké sur le serveur, hors un hébergement mutualisé c'est à ensemble de plusieurs dizaines de machines.
Hors avec une architecture comme ça il y a 100% de chance que vous ne tombez par sur le même serveur à chaque fois et donc perdez la session qui est stocké sur le serveur (serveur qui aura donc changé silencieusement pour faire de la répartition de charge).
En générale 2 cas sont possible pour éviter ce phénomène :
1 - stocker les sessions sur le filer (attention aux perfs, et il faut modifier le .ovhconfig)
2 - stocker les sessions en BDD (ce que fait pas mal de CMS).
Cordialement, janus57
Merci pour l'éclaicissement Janus, ca m'aide pas mal.
Ne passant pas par un CMS, je vais quand meme me renseigner sur la sauvegarder en DB. Concernant le stockage sur le filer, je n'ai pas trop compris? C'est changer le chemin de sauvegarde de session via ini_set session.save_path? Ou autre chose? Genre sauvegarder la session mais coté client (sur le browser)?
Merci en tout cas
Bonjour,
le stockage sur le filer, je n'ai pas trop compris? C'est changer le chemin de sauvegarde de session via ini_set session.save_path? Ou autre chose? Genre sauvegarder la session mais coté client (sur le browser)?
oui c'est pour modifier le chemin des sessions.
non ça le fait pas sur le client mais sur le filer (ou FTP si c'est plus simple à visualiser).
Et non il suffit pas de changer le chemin avec un ini_set il y a une autre modification à faire (elle avait été donné sur le forum, mais je sais plus sur quel topic et je suis pas sûr qu'une doc de OVH existe pour faire la modification), et en générale même l'équipe OVH dé-conseil car cela peut avoir un impact négatif sur les perfs.
Cordialement, janus57
Parfait, merci pour le complément d'informations. Je crois que j'ai tous les outils pour corriger ce problème du coup ![]()
Le problème a donc été contourné avec une mise des sessions en DB ![]()
Encore merci pour vos interventions
PS : Je me suis inspiré de la solution décrite ici pour ceux qui auraient un souci comme moi : https://github.com/dominicklee/PHP-MySQL-Sessions