Mise à jour d'une donnée toute les secondes sans envoie de formulaire ou d'ajax

monoski Messages postés 132 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 13 mai 2013 - 27 déc. 2010 à 17:46
monoski Messages postés 132 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 13 mai 2013 - 28 déc. 2010 à 01:03
Bon le titre est très peu explicite j'espère que certain auront la gentillesse d'y cliquer quand même dessus.

Voilà j'ai un petit défi en matière de conception :

Dans les mini-jeux qui parsèment Facebook, on retrouve souvent des valeurs qui sont actualisé sur le navigateur du client. A titre d'exemple prenons un RPG où l'individu reçoit 600 de bois par minutes, sur son navigateur sera affiché toutes les secondes la progression de son stock de bois, ainsi chaque seconde son stock augmentera de 10.

Je pensais qu'une requête périodique en ajax serait la solution à mon problème en ce qui concerne l'affichage de cette valeur, c'est le cas, on pourrait imaginer un système de requête ajax périodique qui interroge le serveur toutes les deux secondes pour chacune des ressources et pour chacun des joueurs.
Je trouve ceci extrêmement lourd d'une part et j'aimerai savoir s'il existe une autre solution ?

D'autre part, comment actualiser les stocks quand le joueur est déconnecté ?
Quelle solution entreprendre ? Dois-je imaginer un CRON qui vient majorer chaque ressource de chaque joueur périodiquement ou bien les développeurs de jeux réfléchissent différemment et actualisent les données d'un des joueurs seulement quand elles sont susceptibles d'intérargir avec un des joueurs ??

Dans ce dernier cas, qu'elle serait l'utilité d'un CRON à l'heure d'aujourd'hui ?

Quelle solution semble la plus otpimisée à vos yeux ?

Bonne journée à tous =)

3 réponses

cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
27 déc. 2010 à 20:56
bonsoir
une proposition
a++

<?php
session_start();
?>
<html>
<head>
<META HTTP-EQUIV="Refresh" CONTENT="3;URL=index.php?stock=10">
</head>

<?php
if(isset($_GET['stock']) && $_GET['stock']==10){
echo $_SESSION['compteur']=$_SESSION['compteur']+$_GET['stock'];
/* insert mysql ... */
unset($_GET['stock']);
//header('Location:index.php?stock=10');exit;
}
?>

</html>
0
monoski Messages postés 132 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 13 mai 2013 1
28 déc. 2010 à 01:00
Hum le meta refresh n'est-il pas déconseillé ?

Je pensais simuler via un peu de javascript l'évolution réelle des ressources et à chaque fois que celle-ci est utilisée (lors d'un vol lié à une attaque, ou lors d'un achat ou lors de la connexion à la page de jeu), faire une requête php qui actualise la valeur en tenant compte du nombre de ressource gagné par heure et du temps à laquelle la dernière actualisation a été faite.

Est-ce de cette façon que je dois envisager les choses pour qu'elles soient le plus optimisées possible ou bien dois-je réfléchir différemment ?

Bonne journée à tous =)
0
monoski Messages postés 132 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 13 mai 2013 1
28 déc. 2010 à 01:03
Merci pour ton aide, le procédé semble un peu barbarre du fait de l'utilisation du meta refresh qui pourrait être remplacé par une requête ajax périodique, plus convenable d'un point de vue normatif il me semble.

D'autre part, je me demande si la solution la plus otpimisé réside dans cela ou dans la vision précédemment évoquée, et quid du problème du cas où le joueur n'est pas connecté, car cette solution ne tient pas la route dès lors que l'individu est déconnecté du jeu.

Bonne journée à tous =)
0
Rejoignez-nous