Chronomètre en Ajax - PHP - Programmation
Marsh Posté le 19-06-2009 à 00:59:38
Pas de pistes ?
Marsh Posté le 19-06-2009 à 09:03:56
Euh, le temps de réponse du serveur ?
T'a pas pensé au temps qu'il faut à l'information qui part du navigateur pour arriver jusqu'au serveur ?
Marsh Posté le 19-06-2009 à 11:24:52
Euh non j'avais pas pensé à cela. Mais je ne vois pas vraiment le rapport entre le décalage qui se fait entre JS et PHP.
Marsh Posté le 19-06-2009 à 13:01:35
Et bien, si JS doit prévenir php quand il a finit, il faut le temps que la requête parte du navigateur à l'intant T, qu'elle atteigne le serveur a l'instant T+lag_moyen, que le serveur la comprenne à T+lag_moyen+interpretation...
Si en plus t'a des firewalls sur le trajet...
Marsh Posté le 19-06-2009 à 16:47:33
Bah en fait c'est pas la question qu'il a fini...
Tu as deux chronomètres lancés en meme temps coté JS et côté PHP. Plus le temps passe, plus les deux sont décalés. Or je veux me débrouiller pour avoir le même résultat à la fin, comment faire ? Comment synchroniser ?
Cela dit, je te rejoint sur l'histoire du lag
Marsh Posté le 19-06-2009 à 17:46:49
DaSayan a écrit : Bah en fait c'est pas la question qu'il a fini... |
non, php = demarrage immediat, js = demarrage quand la page est arrivée chez le client et chargée generalement
Marsh Posté le 19-06-2009 à 17:50:01
tomsoft a écrit : |
Donc si j'ai bien compris :
- Je me mange du lag au démarrage
- Je me mange du lag à chaque que je resynchronise les deux via Ajax.
Est-ce qu'il y existe une solution alors pour que l'affichage en JS reste cohérent avec ce qui est calculé côté PHP ? Que je n'obtienne pas 20s en JS et 24s en PHP ?
Marsh Posté le 19-06-2009 à 18:35:31
Alors il ne me reste plus qu'à abandonner l'affichage du score en JS pour plus de clarté...
Merci à toi et à l0g4n pour votre aide !
Marsh Posté le 17-06-2009 à 17:19:57
Bonjour à tous, j'ai un petit problème de conception là
Je cherche en fait à faire pour un jeu en Javascript un chronomètre : le plus rapide sera sensé gagner. La précision doit être au millième de seconde.
Je souhaite que ce chronomètre s'affiche côté JS, à titre d'information, et c'est ce que je fais avec ceci :
Pas besoin d'être plus précis, à la seconde cela suffit.
Cependant, pour d'évidentes raisons de sécurité, le vrai décompte se fait côté PHP, avec des microtime(). Quand le jeu est fini, je fais le calcul pour en déduire le temps passé sur le jeu :
Le problème est que j'obtiens à la fin un décalage clair entre le JS et le PHP. Je peux ainsi obtenir sur le JS un temps de 69 secondes, et 72.214 secondes en PHP : le JS s'écoule plus lentement que le PHP. Ca se comprend un peu ( côté client moins fiable que côté serveur ), mais bon....
Evidemment cela peut troubler le joueur qui obtient un résultat différent de qu'il a vu.
Une solution je pense serait de passer par Ajax : régulièrement ( toutes les 5 secondes on va dire ), j'interroge le serveur, celui-ci me renvoit le décompte PHP en cours ( tronqué à la seconde cette fois-ci ), et j'écrase le décompte JS en cours avec celui-ci. Mais est-ce que je ne risque pas de surcharger le serveur ainsi ? Est-ce qu'on risque pas d'avoir des sautes du chrono JS ?
Ou bien existerait-il une autre solution ?
Merci d'avance pour vos lumières
PS : je ne savais pas où le mettre, dans la section JS ou PHP, alors je l'ai mis ici...
Message édité par DaSayan le 17-06-2009 à 17:22:18
---------------
Tous les programmeurs sont des auteurs et tous les ordinateurs sont de mauvais acteurs.