Bonjour,
Je dispose d'un site web hébergé sur OVH depuis 5 ans, et sans aucunes modifications, depuis ce matin les utilisateurs sont tout le temps déconnectés.
J'ai fais une page de teste qui affiche la session PHP (var_dump($_SESSION) et en actualisant la page toutes les secondes, parfois la session est vide, et parfois elle se ré remplit, ce qui illustre parfaitement ce qui se passe.
Que faire ? Je ne vois aucunes pannes chez OVH mais mes sessions PHP rendent la navigation sur le site impossible
Bonjour @ManonM7
Avez-vous activé le CDN ?
Bonjour
Je passe par cloudflare mais aucuns soucis à ce niveau là
Les sessions viennent et repartent aléatoirement, du coup il en résulte que mes utilisateurs sont déconnectés, et se reconnectent tout seul d'une page à l'autre.
Aucuns soucis dans le code, je suis développeuse et le site tourne parfaitement bien depuis des années et rien a été modifié depuis deux mois sur le site. Pas de trafic élevé
Bonjour,
Vous avez vérifié que le serveur n'est pas changé au moment où les sessions sont vides (si j'ai bien compris) ?
Cordialement, janus57
Bonjour @ManonM7,
Avez-vous pu trouver une solution depuis votre dernier message ?
Si ce n’est pas le cas, je vous invite à ajouter des éléments afin qu’un nouveau retour puisse vous être apporté par la communauté.
^FabL
Bonjour, j'ai exactement le même problème que toi, as tu trouvé une solution ?
Je désespére depuis 3 jours…
Le problème provient du mécanisme de cluster employé par OVH : la sauvegarde de la session se faisant sur un des serveur du cluster, pas sûr que la prochaine requête HTTP arrive sur le même serveur, il arrive pour des raisons de répartition de charge que la requête soit acheminé sur un autre serveur, où la session ne sera pas présente, ce qui produit un $_SESSION vide.
OVH préconise de mettre en place un mécanisme de SESSION par base de donnée.
Plus d'info ici : https://community.ovhcloud.com/t/44079
Bon, après quelques essais et une grosse période de test, je partage ma solution :
Comme indiqué plus haut, le problème provient dOVH qui ne stock pas les sessions au niveau du cluster, mais localement sur le serveur, donc hors synchronisation entre cluster.
Du coup, lorsque le load balancing dirige la requête SQL sur un autre serveur, le fichier de session de l'utilisateur lui n'a pas suivi.
On peut le remarquer juste avec un bout de programme comme celui-là, à placer sur votre serveur et à répéter régulièrement (du genre `cron 30 * * * * curl -f "https:…" > /dev/null`) :
session_start();
$line = sprintf("%s %s: %s
\n", date("d/m/y H:i:s"), `hostname`, var_export($_SESSION, true));
$_SESSIONhttps://dnada.fr/bug/perte_session_ovh.html">'ok'] = array_key_exists('ok', $_SESSION) ? $_SESSION['ok'] + 1 : 1;
file_put_contents(FILE . '.log', $line, FILE_APPEND);
readfile(FILE . '.log');
?>
Vous allez remarquer que la session va passer à vide en même temps que le changement de serveur OVH.
Je ne vois pas d'intérêt à sauver les sessions en BDD, en ajoutant des requêtes SQL et en alourdissant la BDD, alors je suis partie sur le file système.
La solution simple de changer le dossier de sauvegarde des sessions ne fonctionne pas, puisque OVH inhibe la fonction session_save_path().
J'ai donc implémenté une petite interface PHP SessionHandlerInterface, qui aiguille les fichiers vers la partie synchronisée des clusters d'OVH.
Et depuis, plus une seule déconnexion.
Si cela vous intéresse, vous pouvez trouver l'exemple ici : [https://dnada.fr/bug/perte_session_ovh.html
Bonjour LaurentC79,
Merci pour ta réponse. je viens de faire le test de ton interface. Ca semble avoir corrigé mon probléme.
Merci encore,
J'ai souvent ce soucis avec OVH, tous les utilisateurs sont déconnectés et quand on se reconnecte on est instantanément déconnecté, parfois on actualise et on redevient connecté, bref c'est n'importe quoi et ça fait fuir les visiteur
Bonjour,
soit faut stocker les session en BDD soit définir le point de stockage.
Si un environnement en cluster vous pouvez être baladé de serveur en serveur en fonction de la charge et si la session est stocké localement sur le serveur, celle-ci n'existe plus si vous êtes sur un serveur différent.
Note : c'est pas spécifique à OVH, c'est le cas chez tous les hébergeur qui utilise un système de cluster sans gestion centralisé des sessions.
Cordialement, janus57
Merci,
On a la main là dessus en mutualisé ?
Bonjour,
On a la main là dessus en mutualisé ?
sur quelle partie ?
Cordialement, janus57