JeuWeb - Crée ton jeu par navigateur
Tâche Cron ? - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Tâche Cron ? (/showthread.php?tid=4813)

Pages : 1 2 3 4


RE: Tâche Cron ? - Odawin - 12-05-2010

Warf désolé j'ai pas penser à faire de recherches (oooh le boulet -_-). En fait c'est pour des ressources, etc... que j'en ai besoin ^^ J'avais penser à faire des tâches Cron car si un joueur X est attaqué pendant qu'il n'est pas connecté, il faut que je le calcul les gains du joueur Y(l'attaquant) par rapport au moment de l'attaque, donc si je me base sur les ressources datant de la dernière connexion du joueur X, les gains pour le joueurs Y seront faussés :O


RE: Tâche Cron ? - Allwise - 12-05-2010

Les tâches cron sont clairement pas destinées à des traitements "user centric". Pour l'exemple des PA donné par roworll je n'utiliserais pas non plus de cron. En effet, les joueurs n'ont pas besoin de connaître les PA des autres pour jouer. Si la mise à jour des points d'action n'est importante que pour le joueur concerné, alors autant mettre à jour la donnée à la connexion de l'utilisateur. D'autant plus que pour ce genre de données qui évolue de manière linéaire avec le temps, on peut facilement faire le calcul au sein même de la requête si le résultat n'est destiné qu'à l'affichage.

Les tâches cron sont plutôt à utiliser pour des traitements qui touchent à la globalité de l'application, les traitements lourds, les traitements de fond...
Niveau consommation, une tâche cron ça consomme absolument rien. Une fois que le service tourne sur le serveur, une tâche de plus ou de moins ne fait aucune différence. En fait ça consomme même moins, car seul php l'interpréteur tourne avec une tâche ( php ou autre ), alors que dans le cas de l'exécution au sein de la navigation il y a le serveur web ( Apache ) + php.
Tout ça pour dire que les tâches cron c'est pas idiot :non:


RE: Tâche Cron ? - php_addict - 12-05-2010

en fait je crois que vous vous prenez la tête pour rien dans le sens où vous avez tous raison:

- un script qui calcul les ressource quand necessaire (chargement de la page)
- et en parralele une tache cron toutes les heures en cas d'engorgment de données...

les 2 solutions sont donc a utiliser et pas soit l'une soit l'autre...

enfin...je dis ca mais je n'ai pas encore attaquer la question des crons...


RE: Tâche Cron ? - Argorate - 12-05-2010

Allwise: pour ma part j'ai pas dis que les cron était tout le temps idiot, je parlais dans le cadre de ce post qui est un update de ressources^^
Je suis plutot d'accord avec ce que tu viens de dire sinon... les cron c'est pour les taches recurente et plutot lourde.

Odawin: c'est pas vraiment un problème, il te suffit de lancer la MAJ sur le perso avec qui tu fais une interaction (si MAJ il y a besoin) avant de lancer l'algo de l'action effectué...
(encore une fois, c'est un if() quoi...)


RE: Tâche Cron ? - Odawin - 13-05-2010

Ah oui pas bête ça :O Faudrais que j'essaye de réfléchir un peu par moments >_> Je vais essayer merci :O (mais d'abord régler mon problème de calcul d'heures xD)


RE: Tâche Cron ? - Sephi-Chan - 13-05-2010

Si tu développes en objet, tu peux créer une méthode updateRessources() à ta classe Player. Ainsi, il suffira de l'invoquer quand tu auras besoin d'avoir des ressources à jour.

Imaginons que je suis le joueur J et que j'achète un objet O. L contrôleur de traitement du formulaire (là où l'on vérifie si le joueur a les ressources nécessaires à l'achat de cet objet) va instancier un objet Player (d'après l'ID stocké en session) et appeler sur cet objet la méthode updateRessources().

De même, si le joueur J1 attaque J2 et qu'il y a une notion de pillage des ressources, le contrôleur doit instancier l'objet du joueur attaquer et recalculer ses ressources.

Ainsi, tout est géré dans une seule méthode et c'est très simple. Smile


Sephi-Chan


RE: Tâche Cron ? - Anthor - 13-05-2010

Sephi a raison, mon singleton prend un paramètre optionnel, qui peux forcer une mise à jour de l'utilisateur ou non.


RE: Tâche Cron ? - Colmea - 13-05-2010

Je rejoins Sephi-Chan. Dans ce cas-ci d'update de ressources, j'aurais opté pour la même solution: une méthode UpdateRessource() dans la class Joueur appelée à chaque fois qu'on a besoin d'updater les ressources d'un joueur (aussi bien dès la connexion du joueur que lorsqu'un joueur veut attaquer un autre).

Et tâches Cron pour tout ce qui est backup, Màj du jeu à un certain moment (update à minuit par exemple), etc ...

Smile


RE: Tâche Cron ? - Odawin - 13-05-2010

Merci à tous :d Malheureusement je ne fait pas ça en orienté objet, j'ai pas les compétences nécessaires pour ça ^^ J'ai juste vu un peu le principe de l'orienté objet y'a pas mal de temps dans un cours de C# Confused


RE: Tâche Cron ? - Colmea - 13-05-2010

Fais une simple fonction UpdatRessource($id_joueur) qui prend en paramètre l'id du joueur où il faut aller prendre les ressources alors non ?