Page 1 sur 1

Affichage différent de microtime() d'un poste à l'autre

Posté : 17 janv. 2010, 11:17
par clodinfo
Bonjour à tous,

J'ai un problème très surprenant : j'ai une page PHP5 qui ne fait qu'afficher microtime() : "echo microtime();". Logiquement, et c'est le cas le plus souvent, les différentes personnes qui consultent cette page affichent le même résultat au même moment. Mais j'ai régulièrement le cas de 2 personnes qui ont 10 à 20 secondes d'écart (alors qu'elles synchronisent leur appui sur la touche F5). C'est tout à fait incompréhensible et lorsque cela se produit, le problème est alors systématique entre ces 2 personnes jusqu'à leur déconnexion.

J'ai ajouté les lignes
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Fri, 01 Jan 2010 00:00:00 GMT");
juste avant au cas où ce serait un problème de cache, mais cela ne change rien.

Si quelqu'un a une idée, je suis preneur, car, là, je suis sec ...

Re: Affichage différent de microtime() d'un poste à l'autre

Posté : 17 janv. 2010, 22:37
par ooflorent
Euh ... tu es sûr que ça n'est pas plutôt un écart de 20 microsecondes ou plus généralement que tu as bien lu/interprété le résultat ?

Re: Affichage différent de microtime() d'un poste à l'autre

Posté : 20 janv. 2010, 10:46
par Aureusms
Une différence de réponse d'ordinateur pourrait-il jouer?
Même si le mutli-tache est conservé, je crois me rappeler qu'il ne s'agit en fait que des mono-taches exécutées en parallèles voir à la suite selon le type de serveur.
La différence temporelle est-elle conservée qqsoit le PC utilisée i.e est ce que cela dépend de la session ou du PC? Est ce que cette différence constante se fait toujours entre le PC A > PC B mais pas entre PC B < PC A ? Les deux PC sont-ils rigoureusement identiques ?

Note j'ai marqué PC mais cela peut aussi des MAC, ou autre....

Re: Affichage différent de microtime() d'un poste à l'autre

Posté : 20 janv. 2010, 14:42
par AB
D'après ce que j'ai compris les tests se font sur le serveur distant... ça voudrait dire que le temps d'accès des terminaux vers le serveur peut différer de plus de dix secondes ce qui est quand même surprenant. Je pencherais plutôt pour la réponse de ooflorent

Re: Affichage différent de microtime() d'un poste à l'autre

Posté : 20 janv. 2010, 23:25
par clodinfo
Merci pour vos réponses.

Non, ce sont bien des secondes. Cela semble durer le temps d'une session, l'un des utilisateurs étant systématiquement décalé de x secondes par rapport aux autres.

J'ai fait un code très simple :

Code : Tout sélectionner

<?php header("Cache-Control: no-cache, must-revalidate"); header("Expires: Fri, 01 Jan 2010 00:00:00 GMT"); file_put_contents("fichier.txt",date("YmdHis")."\r\n",FILE_APPEND); ?>
Et voilà ce que ça donne quand j'ai le problème :
  • 20100119194312 Utilisateur 1
    20100119194317 Utilisateur 1
    20100119194323 Utilisateur 1
    20100119194335 Utilisateur 2
    20100119194337 Utilisateur 2
    20100119194328 Utilisateur 1
    20100119194338 Utilisateur 2
    20100119194333 Utilisateur 1
    20100119194343 Utilisateur 2
    20100119194338 Utilisateur 1
    20100119194349 Utilisateur 2
    20100119194343 Utilisateur 1
    20100119194348 Utilisateur 1
    20100119194359 Utilisateur 2
    20100119194400 Utilisateur 2
    20100119194402 Utilisateur 2
    20100119194353 Utilisateur 1
La date serveur de l'utilisateur 2 est en avance d'une dizaine de secondes sur celle de l'utilisateur 1 ... incompréhensible !

Re: Affichage différent de microtime() d'un poste à l'autre

Posté : 20 janv. 2010, 23:38
par ooflorent
Ca n'est pas possible. Le problème ne peut pas venir du serveur.

Est-ce que les 2 utilisateurs testent avec le même navigateur ? Si non, tout le monde sous Firefox 3.5.
Est-ce que les 2 utilisateurs ont désactivé le cache ? Si non, Outils > Options... > Avancé > Réseau > 0 Mo > Vider le cache maintenant.
Est-ce que les 2 utilisateurs accèdent bien à un serveur distant (2 PC + 1 serveur) ? Si non, bah ton test est bidon !
Est-ce que les 2 utilisateurs appuient vraiment en même temps ?

Si la réponse est oui à toutes ces questions, alors il y a forcément un autre problème du coté client. Tu peux consulter le fichier access.log de ton serveur Apache afin de comparer les temps d'accès.

Re: Affichage différent de microtime() d'un poste à l'autre

Posté : 27 févr. 2010, 15:27
par clodinfo
J'ai eu l'occasion d'en parler avec quelqu'un qui a probablement trouvé l'explication : cette page étant en hébergement mutualisé, elle était probablement hébergée sur plusieurs serveurs en load-balancing et l'un d'eux n'était probablement pas à la même heure que les autres et avançait de 10 à 20 secondes, ce qui explique que certains utilisateurs n'avaient pas la même heure que les autres ...

Re: Affichage différent de microtime() d'un poste à l'autre

Posté : 28 févr. 2010, 13:08
par Aureusms
Ca doit être assez frustrant...