non çà ne pose pas de soucis, la bonne solution reste la même.
Pour Anthor qui réclame un exemple:
Prenons donc le cas d'un joueur 1 connecté qui se fait volé des ressources par un joueur 2. Dans cet exemple j'ai enlevé la notion de type de ressource, pour éviter de trop complexifier les requêtes, mais çà ne change rien au problème.
Donc avec la solution des sessions, à chaque page nous aurons :
Pour Anthor qui réclame un exemple:
Prenons donc le cas d'un joueur 1 connecté qui se fait volé des ressources par un joueur 2. Dans cet exemple j'ai enlevé la notion de type de ressource, pour éviter de trop complexifier les requêtes, mais çà ne change rien au problème.
Donc avec la solution des sessions, à chaque page nous aurons :
Code PHP :
<?php
//Si on a pas encore visiter de page affichant
//des ressources durant la session, on met à
//0 pour permettre la récupération des données
if (!isset($_SESSION['ressource'])) $_SESSION['ressource']['timestamp']=0;
//on test pour vérifier que les ressources n'ont
//pas été changé par un évènement indépendant
//du joueur en l'occurrence notre fameux vol
//de ressource
$req=mysql_query(sprintf("SELECT timestamp,nb_ressource,vitesse FROM `t_ressource` WHERE id_joueur=%d AND timestamp=%d",$id_joueur,$_SESSION['ressource']['timestamp']));
/*Si il y a un champs dont le timestamp est supérieur
alors les ressources ont été mise à jour par un
évènement externe(ou alors c'est la première page affichant les ressources) on doit mettre à jour les variables
sessions*/
if ($data=mysql_fetch_assoc($req)) {
$_SESSION['ressource']['nb_ressource']=$data['nb_ressource'];
$_SESSION['ressource']['timestamp']=$data['timestamp'];
$_SESSION['ressource']['vitesse']=$data['vitesse'];
}
$nb_ressource_actuel=$_SESSION['ressource']['nb_ressource']+$_SESSION['ressource']['vitesse']/3600*(time()-$_SESSION['ressource']['timestamp']);
On constate qu'on a une requête en bdd + la gestion de nos variables sessions, qui correspondent à des écritures dans des fichiers (ou en bdd si le gestionnaire de session a été modifié)
Maintenant avec ce que je propose, si on a créer la vue mysql
Code PHP :
<?php
CREATE VIEW ressources_calculees AS SELECT nb_ressource+vitesse/3600*(UNIX_TIMESTAMP()-timestamp) AS nb_ressource_a_jour,id,type,[...] FROM t_ressources;