Problèmes au niveau des sessions.
Bonjour,
suite à une discussion sur la liste utilisateurs, j'ouvre une nouvelle demande ici. En effet, il semblerait qu'il y ait quelques couacs au niveau de la gestion des sessions lors d'accès fortement concurrents.
A la base, les sujets ouverts faisaient part de problèmes avec spip listes et sur ( entre autres ) la page /ecrire/?exec=brouteur qui remontaient des warnings cassant la mise en page, voir les scripts ajax lors de la navigation sur le backoffice ( spip 2.1.19) .
Pour ma part, je cherchais à identifier un problème au niveau des sessions: aléatoirement et de manière rare(issime), j'avais un objet éditorial créé en interface publique qui n'était pas associé à son auteur qui pourtant était authentifié...
En se basant sur la page /ecrire/?exec=brouteur , nous ( les différentes personnes présentes sur la liste ) en sommes arrivés à la conclusion que le problème venait de la présence de plusieurs iframes qui se chargeaient en même temps.
Nous avons alors constaté que :
- les messages d'erreur (warnings) s'accompagnaient de la création de fichiers de sessions exotiques : 1_b54e0943476e2c222205fedabd85365b.php 1_b54e0943476e2c222205fedabd85365b.php.10089007450bdfa9b1acd24.92903351 1_b54e0943476e2c222205fedabd85365b.php.10089007450bdfa9b1acd24.92903351.108190265950bdfa9faf40d5.28198053 1_b54e0943476e2c222205fedabd85365b.php.112332464350bdfa9f8c0d78.70939657 1_b54e0943476e2c222205fedabd85365b.php.112332464350bdfa9f8c0d78.70939657.87572903750bdfaa1b02fc2.05653924 1_b54e0943476e2c222205fedabd85365b.php.134842451350bdfa9be8d864.53958173 1_b54e0943476e2c222205fedabd85365b.php.134842451350bdfa9be8d864.53958173.71218489650bdfa9e5d3250.41604570 1_b54e0943476e2c222205fedabd85365b.php.161928806850bdfa9e555aa6.31918120 1_b54e0943476e2c222205fedabd85365b.php.177933995850bdfa9f0d1e24.08038855 1_b54e0943476e2c222205fedabd85365b.php.182697845650bdfa9a3a03b6.98437290 1_b54e0943476e2c222205fedabd85365b.php.182697845650bdfa9a3a03b6.98437290.90153907150bdfa9d100f51.28975796 1_b54e0943476e2c222205fedabd85365b.php.184212111250bdfaa0ef1781.16259695 1_b54e0943476e2c222205fedabd85365b.php.184212111250bdfaa0ef1781.16259695.80943072550bdfaa1ad4889.56995699 1_b54e0943476e2c222205fedabd85365b.php.209101674150bdfa940b28b1.93999750 1_b54e0943476e2c222205fedabd85365b.php.209101674150bdfa940b28b1.93999750.63630874450bdfa9aa37f14.55249550.63091214150bdfa9aa47696.72364025 1_b54e0943476e2c222205fedabd85365b.php.209101674150bdfa940b28b1.93999750.63630874450bdfa9aa37f14.55249550.63091214150bdfa9aa47696.72364025.135527892250bdfa9aa57612.66433692 1_b54e0943476e2c222205fedabd85365b.php.209101674150bdfa940b28b1.93999750.63630874450bdfa9aa37f14.55249550.63091214150bdfa9aa47696.72364025.135527892250bdfa9aa57612.66433692.155416307550bdfaa05a4373.68648051 1_b54e0943476e2c222205fedabd85365b.php.209101674150bdfa940b28b1.93999750.63630874450bdfa9aa37f14.55249550.63091214150bdfa9aa47696.72364025.135527892250bdfa9aa57612.66433692.80676881650bdfa9b1203a4.81692031
- Dans certains rares cas on obtenait un message d'erreur spip comme quoi un fichier de session ne pouvait pas être écrit.
En cherchant à reproduire le phénomène, j'ai créé deux squelettes minimalistes en partie publique afin de ne pas charger tous les scripts de la partie privée et simplifier les tests au maximum. En employant un squelette se contentant de remonter l'id auteur courant, les soucis étaient mineurs. Par contre dès lors qu'un #SESSION_SET était présent dans le squelette appellé en parallèle, les choses se corsaient. J'ai dans ce cas constaté que de temps à autres j'avais bien une session qui se chargeait mal, et parfois j'avais même la session qui était complètement détruite. Ces tests ne sont pas représentatifs de l'utilisation courante de spip, mais ils me permettaient de forcer la chance.
A titre d'essai, j'ai mis à jour en spip 3 les sites de test et ai obtenu des résultats qui ne sont pas tout à fait similaires :
- les fichiers "étranges" apparaissent.
- de loin en loin, une session ne monte pas et est remplacée par une session anonyme.
- je n'ai pas réussi à faire crasher complètement une session.
- je n'ai pas relevé de messages d'erreur spip indiquant qu'il n'arrivait pas à écrire de fichier session.
Je joins au présent message un fichier contenant des portions des discussions par mail ou sont résumés les tests ( avec les squelettes et les hypothèses sur les points du code ou ça pourrait accrocher ).
J'avoue être un développeur du dimanche, mes compétences commencent à être franchement limite pour aller plus loin, je vous fait donc part de nous réflexions afin que vous puissiez prendre le relais si vous validez nos conclusions ...
Merci.