JeuWeb - Crée ton jeu par navigateur
Mise à jour en temps réel - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Mise à jour en temps réel (/showthread.php?tid=4475)

Pages : 1 2


Mise à jour en temps réel - MisterDidi - 07-12-2009

Salut à tous !

Je voudrais avoir votre avis sur un système de mise à jour en temps réel.

Je crée les fonctions qui met à jours les ressources, les constructions, etc...
Puis je crée un page maj.php que j'execute depuis Putty en SSH qui à un:
Code PHP :
<?php 
while (true) {
set_time_limit(0);
ignore_user_abort();
// LES FONCTIONS DE MAJ
flush();
}

Pensez-vous qu'un while(true) avec une limite de temps est dangeureuse?
Avez-vous une meilleur idée ?

Merci d'avance!


RE: Mise à jour en temps réel - nicodd - 07-12-2009

Tes deux fonctions n'ont rien à faire dans la boucle en premier lieu.
Ensuite, veille à ne pas surcharger ton serveur, utilise un sleep ou équivalent dans ta boucle.
Sinon, faut t'assurer de pas oublier de relancer ton script à chaque plantage, mais enfin, conceptuellement j'suis pas fan du principe. Est ce que ce système est absolument nécessaire ?


RE: Mise à jour en temps réel - php_addict - 07-12-2009

Citation :Pensez-vous qu'un while(true) avec une limite de temps est dangeureuse?
Avez-vous une meilleur idée ?

oui: pas de mise à jour en temps réel...trop long a t'expliquer, désolé...


RE: Mise à jour en temps réel - christouphe - 07-12-2009

(07-12-2009, 04:57 PM)php_addict a écrit :
Citation :Pensez-vous qu'un while(true) avec une limite de temps est dangeureuse?
Avez-vous une meilleur idée ?

oui: pas de mise à jour en temps réel...trop long a t'expliquer, désolé...

surtout trop lourd pour le serveur.


RE: Mise à jour en temps réel - Crimson - 07-12-2009

Pourquoi ne pas utiliser les crons pour ce genre de mise à jour.

Normalement ça peut s'exécuter au minimum toutes les minutes.

Mais après sans plus d'informations sur ce que ça doit vraiment faire, pas facile de dire si il pourrait pas y avoir une autre solution.


RE: Mise à jour en temps réel - My Hotel - 07-12-2009

Sinon, encore une fois on le répète, ne faire les mises à jours que quand les données sont demandées. Genre pour des ressources : on sait que le joueur gagne 100blé/heure.
Il n'a pas affiché une page avec les ressources dessus depuis 3H. Quand il se connecte, on lui rajoute 3*100 blé. C'est aussi simple que ça.

Ça évite quand même pas mal d'actualisation TOTALEMENT inutiles. Genre, c'est quoi l'intêret que les ressources du joueur augmentent progressivement, si il le voit pas? Smile

Pour moi, on met à jour les données quand un user demande à les voir, et c'est tout. Après, effectivement on ne sait pas ce que tu veux faire. Donc ma solution pourrait ne pas convenir. Mais en tout cas, c'est celle que j'utilise Wink
Voilà, bye!


RE: Mise à jour en temps réel - Crimson - 07-12-2009

Là je suis pas vraiment du même avis que toi sur le fait d'actualiser seulement quand le joueur le demande.

Supposons que t'as X joueurs:
Est-ce que faire X requêtes qui modifie un enregistrement, c'est mieux que de faire une requête qui modifie X enregistrement ?

De plus ça "oblige" à tester à chaque chargement de page si il faut mettre à jour ou non (à moins bien sur de mettre un lien "récolter" pour que le joueur le fasse lui même).

Donc dans ce cas là (un gain par heure et mise a jour automatique), je serais plus favorable à une tache automatisée.

Apres c'est une question de manière de coder, et je me dis que si il y a beaucoup de joueurs dans la base et pas trop d'actifs ou qui se connectent pas toutes les heures, ça peut être une solution intéressante.
Mais les taches automatisées sont quand même une bonne solution.


RE: Mise à jour en temps réel - php_addict - 07-12-2009

je plussoie, pas de tache cron, imagine une tache cron toutes les secondes !!! ce n'est pas fait pour ca...même avec un dédier ultra puissant...

un indice:

seul ton affichage doit etre en temps reel, apres il faut que tu te fasse un cahier des charges pour ce probleme precis, et apres seulement le code...

courage...


RE: Mise à jour en temps réel - MisterDidi - 08-12-2009

Je pensais à cette technique pour avoir une charge processeur +/- constante.

Par exmple, au lieu d'avoir des fois des pic de 100%, 80%, 10% cela se stabilise par exemple entre 40% et 50%

Rien n'empeche aussi que je mette des
Code PHP :
<?php 
usleep
(300);
pour alléger le tout.

Maintenant si vous trouvez que c'est vraiment une mauvaise idée....

J'avais pris cette idée après voir vu comment créer un serveur de chat en php (qui tourne avec un while(true) justement).

Aussi je peux ne pas tout mettre à jours aussi. Je compte le nombre de boucle et par exemple si c un nombre impair je met à jour tel chose, nombre pair tel chose;

Je suis pas chaud pour màj à l'accès. Si le jeu marche pas et qu'il a 20 joueurs d'accord. Mais si au grand bonheur la chance il y a 200 joueurs, je sais pas si le serveur va aimer...


RE: Mise à jour en temps réel - My Hotel - 09-12-2009

Effectivement, ça serait intéressant de voir comment les gros jeux (type Ogame et Ikariam) tournent.
Je sais pas pourquoi, mais moi je vois ça comme ça : le while true = boucle infinie = le mal! Peut-être de mauvaises habitudes?

Moi je fais des MaJ à l'accès, mais faudrait faire des tests pour voir qu'est-ce qui est mieux. Smile

Bye