JeuWeb - Crée ton jeu par navigateur
Comment exécuter des tâches journalières - 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 : Comment exécuter des tâches journalières (/showthread.php?tid=3368)

Pages : 1 2 3


Comment exécuter des tâches journalières - Selvagor - 01-12-2008

Alors j'aimerai que dans mon jeu qu'une "IA" puisse agir tout les jours et aussi faire des màj sur pleins de critères. Tout ces tâches se passeront sans doute par un traitement qui se fera la nuit pendant une coupure du jeu. Mais dans la pratique je ne sais pas du tout comment faire une telle chose. Par quel moyen peut-on programmer une telle tâche journalière ?

Ce serait faire un peu comme dans hordes avec leur coupure à minuit (enfin moi je pense la faire vers 5-6h du matin comme ça on peut se coucher tranquille et tout est up au réveil).


RE: Traitement nocture à passer - rygnes - 01-12-2008

Yop !

Un bonjour n'a rien d'optionnel.

Si tu es un sous un système d'exploitation de type unix/linux, tu as ce merveilleux gestionnaire de tâches : Cron.

Cela implique que ton hébergement te permette de l'utiliser.
Sinon tu peux user d'une plateforme externe du type : Onlinecron.


RE: Traitement nocture à passer - Selvagor - 01-12-2008

(01-12-2008, 03:18 PM)rygnes a écrit : Cela implique que ton hébergement te permette de l'utiliser.
Sinon tu peux user d'une plateforme externe du type : Onlinecron.
Merci pour Onlinecron, je me souvenais vaguement de cron mais la plateforme externe va m'être bien utile je pense.


RE: Traitement nocture à passer - rygnes - 01-12-2008

Enfin c'était un exemple, il en existe d'autres.
A noter que tu as souvent des décalages de l'ordre de la minute, mais pour ton usage cela ne semble pas être un réel problème.


RE: Traitement nocture à passer - My Hotel - 01-12-2008

Il faut aussi rajouter que parfois, la tâche n'est carrément pas exécutée, ce qui est un gros inconvénient, et ils effectuent aussi de temps en temps des tests en exécutant toute les tâches qu'ils ont dans leur BDD, ce qui est tout aussi gênant si elle est exécutée à une mauvaise heure...

Mais faute de mieux, faut t'en contenter.


RE: Traitement nocture à passer - Sephi-Chan - 01-12-2008

Je ne lis décidément que de mauvais échos sur les services de Crons…
Heureusement qu'on arrive à une époque où les serveurs dédiés ne coûtent plus si cher. C'est bien plus pratique de gérer soi-même les Crons.


Sephi-Chan


RE: Traitement nocture à passer - Zamentur - 02-12-2008

Il y a bien souvent des solutions alternatives...
On peut simuler un cron soi même avec php aussi, en ne perdant pas de vu que le script pourrait éventuellement être stoppé.

Il est aussi possible d'attendre le lancement d'une page pour effectuer les actions, çà a certes le désavantage de ralentir les premier utilisateur du matin, mais ce n'est pas extrèmement grave.
Et là au moins t'es sur que tiout est executé.

NB: tu peux aussi faire un mix de la méthode, cron avec les 2 mèthode au dessus.


RE: Traitement nocture à passer - rygnes - 02-12-2008

Une simulation de cron avec php consommera davantage de ressources serveur par contre, ce ne sera pas un code très optimisé.


RE: Traitement nocture à passer - phenix - 02-12-2008

OU alors on récupère une vieille machine, on installe un linux dessus, on la connect a sont switch et c'est fini Smile


RE: Traitement nocture à passer - keke - 02-12-2008

Coucou,

J'utilise une table d'action qui me donne l'heure d'exécution des tâches. A chaque fois qu'un joueur effectue un clic, je scrute cette table pour déterminer la prochaine action à mener. S'il y'en a une, je l'exécute.
Mes actions ne durent généralement pas plus d'une seconde donc l'utilisateur ne ressent aucun effet de lenteur.

Ainsi, je n'ai pas de crontable et pourtant mes monstres peuvent se déplacer, mes magasins se remplir d'objet, mes marchés se dérouler tranquillement.

Si cette méthode t'intéresse (et vu que tu n'es pas le seul à imaginer des solution via crontab) dis le moi. Peut-être qu'un tutorial intitulé "alternative à une crontab" serait le bienvenu ?

Kéké
PS : Cette solution implique au mieux l'action à l'instant T, au pire, l'action avec un léger différé proportionnellement à l'activité de tes joueurs.