kopierreko
Messages postés139Date d'inscriptionmercredi 12 mars 2008StatutMembreDernière intervention10 juillet 2010
-
9 mai 2008 à 21:14
nicomilville
Messages postés3472Date d'inscriptionlundi 16 juillet 2007StatutMembreDernière intervention28 février 2014
-
13 mai 2008 à 18:26
Bonjour tout le monde !
Je m'y connait très bien en php mais là j'avoue qu'il me manque une étape ^^
Voilà je voudrait exécuter une requête sql en php toutes les 10 secondes ( par ex )
Voilà ma requête
$newmana = $oldmana+1;
mysql_query("UPDATE game_perso set `mana`='$newmana'");
Teclis01
Messages postés1423Date d'inscriptionmardi 14 décembre 2004StatutMembreDernière intervention29 décembre 20124 9 mai 2008 à 21:49
qui doit effectué cette requete ? ton client ou ton serveur ?
Je crois que tu rêves un peu sur la modélisation ... tu t'y connais en php ? moi je suis moine
Il vaut mieux poser une question et passer pour bête que le rester toute sa vie
Les geeks n'ont pas une case en moins ils commencent juste à compter à partir de zéro
gibozsec
Messages postés318Date d'inscriptionmardi 27 mai 2003StatutMembreDernière intervention11 mars 2010 10 mai 2008 à 10:20
Bonjour,
C'est possible en utilisant javascript et php. Ce que t'explique Teclis01(d'une manière pas très claire) c'est que tu dois effectuer une requête ajax qui appelera ta page php.
Par contre, si ton visiteur désactive le js, ça ne marchera pas.
nicomilville
Messages postés3472Date d'inscriptionlundi 16 juillet 2007StatutMembreDernière intervention28 février 201436 10 mai 2008 à 11:44
Salut,
oui exactement, ajax peus efectuer une requête en rechargeant la page ou sans recharger la page : voir les modes synchrone et asynchrone !
Ajax peus ne rechager qu'une partie de ta page par exemple un div en utilisant un innerHTML !!!
Teclis01
Messages postés1423Date d'inscriptionmardi 14 décembre 2004StatutMembreDernière intervention29 décembre 20124 10 mai 2008 à 15:30
bah disons que la personne veut faire un jeu, et ce jeu ne vivra que lorsque le user sera connecté...
et puis evidement c'est chaque seconde ... donc aucun float ... donc soit 0 soit 1.. Evidement aucun timestamp pour le dernier ajout (quand on bacle on le fait pas à moitié)
Non je crois vraiment qu'il faille un champ en float et un champ pour le timestamp et qu'on augmente virtuellement le mana via du js mais que lors d'une action on fasse l update et la vérification...
Donc ta modélisation est mal faite. Sans parler de la logique de mise en oeuvre.
A bon entendeur...
Ps: on ne dit pas con
Il vaut mieux poser une question et passer pour bête que le rester toute sa vie
Les geeks n'ont pas une case en moins ils commencent juste à compter à partir de zéro
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 11 mai 2008 à 10:09
Hello,
alors déjà : on se calme. Je ne veux plus voir le même échange sur ce ton dans ce post.
D'un côté, on ne dit pas "con" en effet (ou autre vilain mot du même accabit, ne jouez pas dessus) (sur les mots, j'entends), de l'autre, on explique gentiment : quand on monte un projet, on ne commence pas en même temps, on ne finit pas en même temps, on avance chacun à notre rythme, et puis de toute manière, on n'en arrive pas forcément aux mêmes conclusions. C'est un peu comme ça que la vie fonctionne d'ailleurs...et on n'est pas censés prôner l'homogénéité parfaite des idées, actions, réactions, pensées etc...pour ceux qui ont suivi mon raisonnement, tant mieux, pour les autres : arrêtez de vous chamailler comme des gamins pour rien du tout.
Ensuite, mon point de vue sur la question : "ajax" pose un gros problème dans ce genre de situations; si on a beaucoup de joueurs, on a autant de requêtes. Or, a t on besoin d'autant de requêtes ? Non...on a besoin de mettre à jour x informations, pour n utilisateurs, régulièrement et répétitivement. Et uniquement pour les joueurs actifs, qui plus est (à moins de vouloir faire un monde persistant, auquel cas il ne faut juste pas tenir compte de savoir si les joueurs sont actifs ou non). Et pour ça, pas besoin de faire des requêtes dont la demande provient du client. Des requêtes globales (update mana set mana algo_calcul_nouvelle_valeur (plutôt qu'une variable passée) where actif 1 -ou toute autre condition valable pour le contexte-) iront tout aussi bien, et soulageront le serveur. Parce qu'il vaut mieux un CRON qui lance x requêtes régulièrement sur le serveur DB, que des "ajax" qui lancent x * nbr utilisateurs requêtes sur ces pauvres serveurs web et DB. A moins que vous ayez tous plusieurs serveurs DB et web monstrueux.
Teclis01
Messages postés1423Date d'inscriptionmardi 14 décembre 2004StatutMembreDernière intervention29 décembre 20124 12 mai 2008 à 03:52
Si je m'amusais a écrire ma signature à tous les posts, je ne serais pas sortit de l'auberge.
Bon sans rancune alors. Désolé aussi de m'être emporté je suis un poils tendu ces temps ci
So pour ton probleme c'est pas resolvable comme tu as fait (me semble) Et tu peux me croire vu ce que je fais depuis quelques temps maintenant! Je prend malalam en témoin du boulot que je fais sur un de mes zouzous
Deja ta table doit contenir 2 champs!
1/mana de type float
2/last_time de type integer
last_time contient le timestamp (int) du dernier calcul de mana (ainsi quand le joueur n'est pas connecté il regen son mana lors de sa future reconnexion)
mana contient le nombre de mana qu' a ton user.
La requete a répeter toutes les 10 secondes doit etre au maximum "transparente"
Donc il te faut :
1 js qui ajoute visuellement x mana.
1 js appellé lors de l'utilisation d une action qui apelle un script php pour mettre à jour la vraie mana en bdd ( on evite ainsi ttes les requetes sql ttes les 10 secondes surtt s il s endort devant ) calcule si l'action est possible, fais ou non l'action et met a jour l'interface.
Voilà comment allié resultats et ressources.
PS:evidement lors de la maj effective de la mana, il faut mettre a jour le timestamp.
Il vaut mieux poser une question et passer pour bête que le rester toute sa vie
Les geeks n'ont pas une case en moins ils commencent juste à compter à partir de zéro