JeuWeb - Crée ton jeu par navigateur
taches ne s'éxcécutant qu'une seule fois. - 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 : taches ne s'éxcécutant qu'une seule fois. (/showthread.php?tid=328)

Pages : 1 2


taches ne s'éxcécutant qu'une seule fois. - mimi133 - 14-10-2006

Dans mon jeu PHP ( quel mystère ),
il y aura des combats ,
mais le problème c'est qu'il faudrait faire des taches cron pour chaque combat, et qu'il faudrait pouvoir les créé à partir d'un script php.

En gros, il faut que n'importe quel utilisateur, à l'éxécution d'un script PHP, provoque l'éxécution d'un autre script, mais à un moment choisi.

Si quelqu'un a la solution, je le remercie.


RE: taches ne s'éxcécutant qu'une seule fois. - LittleQI - 14-10-2006

Dans ta base de données, tu donnes une date a chacun de tes combats (l'heure exacte a laquelle ils doivent etre fait).
Il te suffit dans ton script de selectionner tous les combats dont la date est depassée et de les faire.


RE: taches ne s'éxcécutant qu'une seule fois. - mimi133 - 14-10-2006

j'y ai penser mais si au moment ou devrais se apssser la bataille, des unités était en cours de production, après elles seront produites, cela faussserait le combat.


RE: taches ne s'éxcécutant qu'une seule fois. - Loetheri - 14-10-2006

Et si lors de la connexion de l'un ou de l'autre ou d'un autre combat, tu mettais à jour ce qui devait être construit.
Voyez un problème ... mais regardez le autrement ;-)


RE: taches ne s'éxcécutant qu'une seule fois. - mimi133 - 14-10-2006

a la limite, sa serait une solution, sinon j'ai vu qqpart sur le net tache At , est-ce que qqn connait, c'est comme les taches cron mais sa s'excécute une seule fois.


RE: taches ne s'éxcécutant qu'une seule fois. - LittleQI - 15-10-2006

je pense que tu prends ton probleme du mauvais coté,
si j'ai bien compris tu veux créer à chaque fois une nouvelle entrée dans ton crontab pour chaque combats.... dans l'absolu c'est possible depuis PHP mais ton crontab deviendrai un sacré bordel.
En revanche avec un cron qui execute à intervalles reguliers un script PHP qui execute les combats devant etre effectués. Et pour les unites en cours de production, comme l'a dit Loetheri il te suffit de les créer avant le combat dans ton script.


RE: taches ne s'éxcécutant qu'une seule fois. - Loetheri - 15-10-2006

A la limite ? Smile
J'adore ^^
Si tu veux faire au plus complexe avec des crons et d'autres services, fonce ^^ Personnellement, je serai bien heureux de savoir comment cela fonctionnera au final.


RE: taches ne s'éxcécutant qu'une seule fois. - gtsoul - 15-10-2006

Un pote a codé un ogame-like (c'est pas du tout un clone et y'a moult rp, mais le système e jeu est similaire notamment au niveau du temps différé).
Les constructions, les recherches, les combats, les déplacements tout est en différé. Il gère ça via une table avec un timestamp et une tache régulière (1min) qui execute les actions "périmées". Ca ressemble fortement à du temps réel avec une bonne gestion des ressources.

Citation :j'y ai penser mais si au moment ou devrais se apssser la bataille, des unités était en cours de production, après elles seront produites, cela faussserait le combat.
Dans son cas particulier, il trouve cela rigolo. Cela ressemble à un jeu d'échec ou chaque joueur prévoit plusieurs coups d'affilées et au final, on voit le résultat en différé. Cela dépend de la réalité rp qui se cache derrière ton différé. Dans son cas, les combats sont différés parce qu'il faut que la flotte rentre dans l'atmosphère (donc calcul de l'orbite optimale), se pose sur la planète pour ensuite combattre. Donc si des unités ennemies sont produites entre le temps ou l'ordre d'invasion est lancé et le moment ou l'attaque commence réellement, celles-ci participeront au combat.


RE: taches ne s'éxcécutant qu'une seule fois. - mimi133 - 15-10-2006

j'ai peur que les taches crons sa soit surchargée après, surtout que je n'aurais pe etre aps acces directement au crontab,
la solution sa serait de faire 1 requete cron toutes les 1 minutes, mais j'ai peur que sa fasse trop de requete et que mon hebergeur cloture mon compte après. fo que je me renseigne sur les conditions.


RE: taches ne s'éxcécutant qu'une seule fois. - gtsoul - 15-10-2006

j'avais omis de preciser :
il faut une cron pour chaque fréquence d'évenements, et pas une cron pour chaque evenement

pour calculer la charge c'est simple, tu prends phpmyadmin et tu executes tes requetes en regardant le temps que ca a pris.
sinon tu peux utiliser httpunit pour tes tests unitaires et (j'ai oublié le nom) pour le calcul de charge serveur.

Mais si tu arrives à tout encapsuler dans des requetes sql, c'est très rapide. Il faut éviter le 1. SELECT dans la base, puis 2. UPDATE pour chaque élément à modifier.