Alors, voici ma configuration de test:la gestion des sessions PHP lorsque le même client demande le même script plusieurs fois à la fois
session_start();
if(!isset($_SESSION['bahhhh']))
$_SESSION['bahhhh'] = 0;
$_SESSION['bahhhh']++;
sleep(5);
die('a'.$_SESSION['bahhhh']);
Ce que je pense arriver est que chaque fois que je frappe la page, il renvoie un nombre différent . Mais si j'utilise plusieurs onglets et que je les actualise chacun dans les 5 secondes qui suivent le premier, ils renvoient tous le même nombre. (Ce n'est pas la mise en cache côté client, car le délai de 5 secondes est toujours évident.)
Pourquoi le fait-il et comment résoudre ce problème? Il semble avoir le même problème étrange de mise en cache avec les données de fichier et de base de données, et m'empêche de construire un mutex qui fonctionne pour éviter d'exécuter le même code plus d'une fois à la fois.
Voici une autre, par exemple plus simple:
echo microtime();
sleep(10);
Exécuter ce 3 fois, chaque 2 secondes d'intervalle, et tous les trois le même rendement microseconde. WTF?
Comme je l'ai dit, j'ai également utilisé des fichiers et des bases de données pour cette approche. Voici un autre script de test qui ne se comporte pas comme prévu: echo microtime(); sommeil (10); Si vous l'ouvrez dans plusieurs onglets, puis actualisez chacun dans les 10 secondes les uns des autres, jamais l'onglet prétendra qu'il a été appelé exactement la même microseconde (une impossibilité évidente). – VexedPanda
Je ne comprends pas quel support de stockage pour faire avec votre problème. J'ai testé votre script dans 5 onglets, rafraîchissant chacun dans les 10 secondes les uns des autres et obtenu des résultats différents à chaque fois. Testé avec le dernier 5.2.x sur Ubuntu 9.10. –