JeuWeb - Crée ton jeu par navigateur
Sessions ou MySQL ? - 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 ou MySQL ? (/showthread.php?tid=5008)

Pages : 1 2


Sessions ou MySQL ? - zeppelin - 08-09-2010

Bonjour tout le monde!

A vrai dire je me posais une question... Les jeux se comportent de requêtes mysql select et update, select souvent en début de page (charger les ressources, les bâtiments, les troupes etc) ainsi que les updates sur les actions.

Question: Pourquoi ne pas charger au loggin (par exemple) toutes les infos tel que nommé avant en session, et ne plus jamais (ou presque..) avoir besoin de recourir à des requêtes select? Ensuite sur un update, on update à la fois la BDD ainsi que notre joli object session.

Maintenant la question: Est-ce vraiment plus rapide? Comment le serveur gère 5, 10, 500 sessions d'utilisateur? Quels avantages par rapport à un cache? Est-ce vraiment utile avec PDO? Les poules sont ils des mammifères? Qu'est-ce que l'espace? Bref tant de questions...

Bref si vous pouvez m'éclairer ou me proposer des ressources, c'est avec grand plaisir :-)

Merci à tous!


RE: Sessions ou select mysql? - Anthor - 08-09-2010

Dit moi comment une session est stockée sur le serveur ?


RE: Sessions ou select mysql? - zeppelin - 08-09-2010

D'après mes connaissances, le client stocke un cookie avec l'ID de session, et le serveur stocke sur disque les variables dans le répertoire défini par session.save_path.

Après ma question était plus niveau performance, avantages... Malgré mes recherches, je n'ai rien pu trouver de concluant... :' (


RE: Sessions ou select mysql? - php_addict - 08-09-2010

(08-09-2010, 05:08 PM)zeppelin a écrit : . Malgré mes recherches, je n'ai rien pu trouver de concluant... :' (

faut dire que j'ai rien compris à ta question...


RE: Sessions ou select mysql? - Ter Rowan - 08-09-2010

bah je me suis aussi posé la même question

est ce qu'une fois avoir lancé les requêtes lors de la première page lue, on sauvegarde les retours dans les variables de session pour éviter lors des pages suivantes de devoir relancer les requêtes

et puis je me suis dit... sors déjà ton bouzin avec des requêtes à chaque page (assure toi d'avoir un découpage en couche te permettant de réagir sans difficulté si oui il faut en session ou en cache) et après on verra si il faut optimiser ^^

maintenant c'est vrai que le sujet d'optimisation m'intéresse aussi, même si, à côté de ça, je n'ai pas essayé outre mesure de chercher ailleurs qu'ici comment optimiser


RE: Sessions ou select mysql? - Sephi-Chan - 08-09-2010

Je pense que les sessions ne sont pas l'endroit pour cacher. Mieux vaut utiliser des solutions faites pour, telles que Memcache, Redis, APC, etc.


Sephi-Chan


RE: Sessions ou select mysql? - atra27 - 08-09-2010

Sessions: Ecritures disque
Mysql: Ecritures disque

Dans les deux cas...

Maintenant mysql a lui méme un cache donc on peut le laisser se débrouiller...

Surtout que sa peut causer une désynchro dans le cas d'une action exterieure:
Joueur a vole joueur B sauf que la session de joueur B se remet pas a jour...

bref compliqué pour presque rien
A mon sens...


RE: Sessions ou select mysql? - Anthor - 08-09-2010

Alors effectivement les deux sont sur disque, mais n'ont strictement rien à voir.
Les fichiers de MySQL sont optimisés pour des requêtes lourdes, avec des fichiers séparés, ... de plus tous les utilisateurs disposent des mêmes données.
Le fichier d'une session est uniquement un fichier avec $_SESSION serialisé à l'intérieur, ça peux vite être lourd, et en plus ce n'est pas du tout global.

Conclusion: Ne jamais utiliser les sessions pour stocker des données, hors id du joueur et informations temporaires entre 2 pages.
MySQL est prévu pour la montée en charge et dispose d'un cache performant, alors franchement il n'y a vraiment aucun intérêt à se pencher sur une gestion de cache en début de projet, or projet voué à avoir une montée en charge rapide.
Éventuellement, vous pouvez tout à fait utiliser Zend_Cache, sans le reste du Zend Framework, et disposer d'une solution uniformisée qui pourra gérer les fichiers, memcache, apc sans changer de code.


RE: Sessions ou select mysql? - php_addict - 08-09-2010

aie...

j'utilises pour le defilement de ma map un cache en session

ma map affichée est de 13*13 et peut défiler au nord, sud, etc...

a chaque affichage de la map, je met en cache en SESSION les cases suivantes non encore affichées pour ne pas re-interroger la bdd a chaque défilement de la map...

j'ai pas bon alors ???

que dois je utiliser ? (pour le moment je n'ai qu'un mutu, mais aurait un dédier...)


RE: Sessions ou select mysql? - niahoo - 08-09-2010

Il te faut faire un benchmark pour simuler les deux solutions avec 1000 utilisateurs en simultané.

En local ou au mieux en prenant un vieux PC et en montant ton serveur dessus.