JeuWeb - Crée ton jeu par navigateur
sessions VS mysql ... optimisation ? - 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 : sessions VS mysql ... optimisation ? (/showthread.php?tid=4362)



sessions VS mysql ... optimisation ? - MaXOhBalle - 21-09-2009

Bonjour,

voilà je suis actuellement en train d'essayer d'optimiser la structure de mon jeu, qui est une phase délicate puisqu'on avance pas vraiment dans le développement du jeu (enfin son avancée "visible")...

Et je me pose une question à laquelle je n'ai jamais eu de réponse concrète sur Internet.

Au tout début du développement, n'ayant jamais développé de BrowserGame, j'ai décidé de me laisser aller à coder librement pour le début.

Une fois le jeu à peu prêt stable j'ai décidé de faire un système d'authentification amélioré et j'ai eu l'idée, au lieu d'aller demander à mysql les données des users et pour éviter les chargement de fichiers de config (contenant beaucoup de variable) à chaque chargement de page d'utiliser exclusivement des $_SESSION[] dans tout le jeu, quelques heures après toutes les modifs j'ai enfin testé le résultat qui marchait... Mais le temps d'execution des scripts avait plus que doublé... Pourquoi les vars de session sont-elles si lourde par rapport aux vars php chargées sur une seule page ? Les requête SQL ne sont-elles pas plus gourmandes en théorie ? J'ai donc dû abandonné l'idée et repris l'ancien système (en améliorant les requête sql, en les diminuant largement).

Bien qu'ayant beaucoup améliorer le mode de récupération des données à mysql, cette récupération se fait à chaque rafraichissement de page, ce qui m'ennui quand même un peu... J'arrive à une execution de tout les scripts de la page qui se fait entre 5 et 20ms (sachant que je suis seul sur mon serveur local (Wampserver)), je me demande d'ailleur si c'est assez rapide pour un futur browsergame qui accueillera beaucoup de joueurs ...?

J'aimerais utiliser un système de cache, mais je ne vois pas du tout comment m'y prendre puisque pratiquement toutes les données des pages sont dynamiques (affichage des matériaux, des villageois qui changent souvent, de la map qui change à chaque nouvelle construction, etc.)... Auriez-vous des idées, des techniques ?

Merci beaucoup pour vos futures réponses, en espérant pas avoir mélangé trop de sujet en même temps Smile


RE: sessions VS mysql ... optimisation ? - wild-D - 21-09-2009

le temps à doublé;
mais tu le mesure comment ? microtime() dans tes script placé où? ou bien externe genre ab ?

sinon: session => (dé)serialisation; alors que des var php direct du fichier de config, tu t'évite l'opération de sérialisation/déserialisation.(et surtout tu évite de polluer les sessions des joueurs avec des données qui n'ont rien à y faire si elles sont fixe/commune à tous; là t'es tout seul, mais imagine que si t'as 100 ou 1000 joueurs connecté tu multiplie autant de fois la copie de ces données de config si tu les stocks dans la session du joueur)

ton temps est juste un indicateur, il te sert pas à grand chose temps qu'il n'est pas obtenu sur le serveur de prod. (à moins que les 2 soit sur la même machine)

le cache c'est statique par définition; donc difficile d'y stocker autre chose que des données statique.
, à toi de voir ce que tu peux donc y stocker pour simuler le dynamisme. (le coup classique c'est une production de x unité par heure. tu stocke le temps de réf, la production horaire et le stock initiale. à toi de voir si tu y gagne vraiment).


RE: sessions VS mysql ... optimisation ? - Plume - 21-09-2009

L'utilisation des sessions en lieu et place du SGBDR est utile dans le cas de lecture de données pour soulager le serveur SQL.

Voir APC


RE: sessions VS mysql ... optimisation ? - Sephi-Chan - 21-09-2009

Je ne comprends pas cette envie de cacher des choses qui n'ont pas à l'être.
Une base de données, c'est fait pour être utilisé, utilisez-la.
Ensuite, vous pouvez mettre en cache via des outils appropriés, c'est à dire : pas les sessions. Je conseille Memcache (pour stocker) en complément d'APC (pour cacher l'opcode).


Sephi-Chan


RE: sessions VS mysql ... optimisation ? - MaXOhBalle - 21-09-2009

J'utilise xDebug pour voir le temps d'exec de mes scripts (et microtime() en fin de chaque bas de page pour voir s'il y a des gros ralentissements)..

J'ai regardé du côté d'APC et ça m'a l'air intéressant Smile je pense donc me pencher sur ce logiciels pour cacher mes codes...

Merci beaucoup Smile