J'exécute assez souvent des grosses requetes sur JediWar, et les temps d'exécution sont impressionants.
Bon, vu que j'ai le temps maintenant, je vais expliquer comment faire cette maj de ressources en une seule requete.
Donc tout d'abord les tables de la base de données :
ressources(joueur, ress1, ress2, ress3)
production(joueur, prod1, prod2, prod3)
coeffs(coef1, coef2, coef3)
Donc dans ressources on a pour chaque joueur ses ressources actuelles.
Dans production on a le nombre d'unités de production par ressource
Dans coeffs on a la production d'une unité de production par tour.
Donc j'ai choisi de faire du tout SQL. Cependant les coefficients de production peuvent être mis dans un fichier de configuration (je le conseillerai même)
UPDATE ressources, coeffs NATURAL JOIN production SET ress1=ress1 + coef1 * prod1, ress2=ress2 + coef2 * prod2, ress3=ress3 + coef3 * prod3
Dans cette requete MySQL fait une jointure entre ressources et coeffs (sans utiliser de champ commun) puis une jointure naturelle sur production. (Si vous ne comprenez pas la jointure naturelle dites le).
Donc pour chaque joueur ca ajoute à chaque ressource, la quantité produite.
Bien entendu cette requete est à exécuter via une tache cron.
En espèrant avoir été clair
Bon, vu que j'ai le temps maintenant, je vais expliquer comment faire cette maj de ressources en une seule requete.
Donc tout d'abord les tables de la base de données :
ressources(joueur, ress1, ress2, ress3)
production(joueur, prod1, prod2, prod3)
coeffs(coef1, coef2, coef3)
Donc dans ressources on a pour chaque joueur ses ressources actuelles.
Dans production on a le nombre d'unités de production par ressource
Dans coeffs on a la production d'une unité de production par tour.
Donc j'ai choisi de faire du tout SQL. Cependant les coefficients de production peuvent être mis dans un fichier de configuration (je le conseillerai même)
UPDATE ressources, coeffs NATURAL JOIN production SET ress1=ress1 + coef1 * prod1, ress2=ress2 + coef2 * prod2, ress3=ress3 + coef3 * prod3
Dans cette requete MySQL fait une jointure entre ressources et coeffs (sans utiliser de champ commun) puis une jointure naturelle sur production. (Si vous ne comprenez pas la jointure naturelle dites le).
Donc pour chaque joueur ca ajoute à chaque ressource, la quantité produite.
Bien entendu cette requete est à exécuter via une tache cron.
En espèrant avoir été clair
Etudiant en logiciels Libres