cs_Zart
Messages postés285Date d'inscriptionjeudi 29 juillet 2004StatutMembreDernière intervention27 juin 2006
-
16 juil. 2005 à 13:07
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 2007
-
17 juil. 2005 à 18:33
Le sujet est dans divers parce qu'il touche à plusieurs domaines différents...
Voilà j'ai posé deux trois questions sur ce forum ces derniers temps
ceci dans le but de développer un projet personnel qui me tient à coeur
: je souhait développer un jeux de rôle en ligne.
Maintenant je pense que je vais m'adresser à des experts car cette question reste pour moi sans réponse :
Je travaille avec une base MySQL en plus de mon serveur apache. ET, je
fais des accès à cette base pour pouvoir connaitre ce qu'il faut (ex :
au moment du log savoir si le login/mdp est correct)
Mais pas seulement pour cela, il faut aussi connaitre des infos plus
importantes, comme les caractéristiques de chaque personnages du
joueur, les équipements qu'ils possèdent...
Je
me suis dit que dans un soucis d'optimisation il valait mieux
sauvegarder en session toutes ces valeurs : les persos, les
équipements, etc... Pour tout ça des classes ont été créée et je
serialize avant de mettre en session. Ca fait déjà pas mal de fonctions
et de classes et je me demande si j'ai fait un bon choix. Car le moment
ou ça devient génant c'est quand on doit fait des modifications :
Evidemment je modifie ma session mais il faut aussi faire une petite
requete.
Pour résumer je ne regarde la base qu'au tout début, lorsque je me
connecte ensuite je fais avec ce qui est en session sauf pour les
modifications, qui sont double en BD et en session évidemment.
Si j'avais fait tout ça en JSP ça aurait été un peu plus simple
j'aurais fait une simple interface que j'aurais implanter à chaque fois
mais là c'est relou...
Ma question et oui j'y viens : Est-ce que tout cela rime à quelques
chose ? je veux dire d'accord je fais moins de requete mais en même
temps je fais pas mal de traitement avec les sessions etc...
En gros est-ce que j'ai vraiment gagné du temps ?
PS : la petite question qui pourrait faire avancer le chmilblic c'est
où sont sauver les variables de sessions coté serveur je suppose ?
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 16 juil. 2005 à 14:10
Bah tout depend du nombre de connectes que tu auras en simultannee. Si
tu en as bcp, ta solution est peut-etre meilleure. Mais si tu en as
relativement peu, autant faire les appels a la base.
Ca reste mon avis...
serialiser desrialiser est tres bien, mais c'est tres gourmand...
Les classes, pareil.
Ceci dit, ta demarche me parait logique : tu crees un objet...a partir
d'infos tirees de ta bdd. C'est logique! Travaille sur l'optimisation
de tes objets plutot : heritage notamment, tres important et pratique...
cs_sjon
Messages postés861Date d'inscriptionmardi 26 mars 2002StatutMembreDernière intervention29 novembre 20061 16 juil. 2005 à 14:28
Sael og blesud
Même avis que Malalam ... Cependant si vous êtes propriétaire du server
je vous conseille de créer des instances de MySQL et ainsi d'user de
requêtes ... Mais là aussi cela n'est que mon avis ... Par ailleurs si
vous optez pour cette solution une " memory watchdog " sera dès plus
recommendable ...;-)
Bon courage ...
NB : Si la réponse vous convient merci de l'accepter pour fermer ce thread ...
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 16 juil. 2005 à 19:27
Salut,
"Je me suis dit que dans un soucis d'optimisation il valait mieux sauvegarder en session toutes ces valeurs"
Excellent choix ça évite les requêtes inutiles ;-)
Par contre pour les mises à jour il te faut une requête, mais bon
personnellement je te conseille de faire le moins appel à la base,
après tout dépend des fonctions php que tu utilises, je ne sais pas si
serialise est gourmande ou pas étant donné que je n'utilise pas cette
fonction et je n'ai donc jamais fait de benchmark avec pour comparer.
Mais un accès base nécessite des ressources et du temps : temps de la
connexion, temps de la requête, etc... Ce n'est pas négligeable. Je te
conseillerai plutôt d'optimiser ton code PHP tout en gardant ton
système de session actuel. Regarde si la fonction serialise t'es
vraiment utile, réduis le nombre de fonctions PHP de ton script, il y
en a surement quelques unes d'inutiles ou de remplaçables par quelque
chose de plus optimisé.
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 16 juil. 2005 à 21:04
Il faudrait faire des tests en effet. Mais la serialisation, c'est TRES gourmand, vraiment.
C'est aussi tres pratique ;-)
Mais bon, un objet, c'est deja pas leger leger...tu le serialises...tu
le stockes, tu le deserialises (objet devient chaine complexe, chaine
complexce devient objet)...
Bah...
Faut faire des tests.
Mais le principe est le bon : inutile et illogique de retourner
chercher dans ta base une info que tu es deja alle chercher, surtout si
cet info devient la propriete d''un objet : tu ne vas pas recreer un
objet a chaque fois! T'as un objet cree, tu le gardes, lol. Parce que
c'est tres gourmand aussi, la programmation objet en php. Sauf si on
est un mega pro, et encore...
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Zart
Messages postés285Date d'inscriptionjeudi 29 juillet 2004StatutMembreDernière intervention27 juin 20061 17 juil. 2005 à 14:04
Je réponds à tous ces remarques...
1. je ne peux pas bannir serialize sinon je ne peux rien mettre en
session car $_SESSION ne prend que des mixed et non des objets. A moins
que vous ayez une solution miracle
2. Qu'est-ce qu'une "memory watchdog", ça m'a l'air très intéressant mais je ne sais pas ce que ça veut dire...
3. Ce modèle qui permet de mettre en session est très pratique mais il
faut quand même que je fasse des accès intempestifs à la bd à certains
endroits de mon site mais là il y a de l'optimisation coté MySQL donc
pas de soucis. C'est à un certain endroit que j'ai voulu faire de
l'optimisation coté PHP car c'était possible... Et que logiquement je
me suis dit que ça allait être couteux coté MySQL....
4. Maintenant je veux bien faire des tests, mais je ne pense pas que ce
soit vraiment utile si on compare les deux solutions je suis sur qu'il
va y avoir ce phénomène.
En lecture mon système est meilleur ET plus fluide car quand on lis
simplement les données celle qui sont en session donc pas d'accès à la
BD
Mais en modification la mienne est plus couteuse LOGIQUE puisqu'il faut
à la fois modifier la session (deserialiser, modifier l'objet,
remplacer l'ancien par le nouveau) et la BD (une tite requete)
La ou ça deviendrait génant c'est quand mon système serait moins rapide
en lecture là je serais degouté. Mais je me rassure en me disant que de
toute façon je fait moins d'accès à la BD, donc aux heures de grandes
affluences le serveur souffriras moins....
5. je suis preneur sur tous les conseils d'optimisation que vous pouvez
me donner également en matière de PHP OO, parce que je débuté le PHP-OO
il y a 6 mois pendant pas très longtemps et ensuite je suis passé à une
autre techno !?!
6 Si y a des volontaires je suis prêts à prendre de bons développeurs
pour me filer un coup de main ou au mins me donner des conseils...
Bonne vacances pour ceux qui ne travaillent pas pour les autres no comment
cs_Zart
Messages postés285Date d'inscriptionjeudi 29 juillet 2004StatutMembreDernière intervention27 juin 20061 17 juil. 2005 à 18:03
OK Antho, je suis d'accord avec ton site je suis sur que tes tests sont exacts. Je vais essayé de faire ça je vais peut être gagné des ms mais petit chouilla par petit chouilla, je vais gagné du temps...
Sinon personne pour un coup de main ?
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 17 juil. 2005 à 18:08
Bah moi je veux bien t'aider à optimiser ton code si tu le postes ici,
enfin tu postes de petites parties, parce que 30 ko de code laisse
tomber (par exemple)