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) |
RE: Traitement nocture à passer - Holy - 05-12-2008 J'utilise le même système que Kéké. Sauf que mes actions sont régulières. Mises à jour tous les 1/4 d'heures, toutes les heures et chaque soir à minuit ^^ Respectivement pour le déplacement de bataillons (par quart d'heure), pour le gain de ressources (par heure), pour les gains de pa (par jour). Ça marche bien et c'est jamais qu'une simple condition RE: Traitement nocture à passer - Sephi-Chan - 05-12-2008 Exact, Rygmes. Ce n'est certes qu'une condition, mais qui est évaluée au chargement de toutes les pages. Plus tu as de joueurs, plus c'est important, alors qu'un cron consomme la même chose quel que soit le nombre de joueurs. Sephi-Chan RE: Traitement nocture à passer - keke - 05-12-2008 Sephi, Tu peux mettre en variable de session la date et heure de prochaine action ... si tu n'as pas d'action à exécuter ^^.Tant que cette date n'est pas franchi, tu t'abstiens de requêter ta base. J'avoue avoir creusé pas mal la question et ne pas avoir trouvé de faille dans mon raisonnement. Mais comme toujours, je peux me tromper. Kéké RE: Traitement nocture à passer - Sephi-Chan - 05-12-2008 Ce n'est pas tant la question d'avoir des failles dans le mécanismes. On a des outils pour effectuer des tâches à intervalles réguliers, ce serait dommage de ne pas s'en servir puisque c'est plus fiable et ça n'influe pas sur le reste du code source de l'application. Sephi-Chan, et la clarté, ça n'a pas de prix. À la limite, pour tout le reste, il y a Eurocard/Mastercard… RE: Traitement nocture à passer - Findel - 05-12-2008 Je suis sur un hébergement mutualisé qui ne propose pas de cron. Déçu de nombreuses fois par les services gratuits (et même payants) de cron distant, j'ai opté pour une autre solution. L'idée est simple : sur chaque page affichée, j'appelle un tout petit script, qui se charge de regarder dans une table pour voir s'il doit faire un traitement automatique ou non. Voici une version simplifiée de ce script : Code : if ($requete = mysql_query('SELECT idtodo, script FROM todo WHERE date < '.time().' ORDER BY date LIMIT 0,1')) { sachant que j'ai une table "todo" avec 3 champs :
Le seul défaut de cette technique c'est que si personne ne vient sur le site, aucun script ne s'execute... Mais en même temps personne ne voit qu'ils ne se sont pas exécuté puisque personne n'est venu sur le site RE: Traitement nocture à passer - Sephi-Chan - 05-12-2008 Ouaip, mais le problème de cette technique, c'est qu'elle gâche des ressources en éxecutant 1 ou 2 requêtes supplémentaire par page vue. C'est vite énorme. Sephi-Chan RE: Traitement nocture à passer - Holy - 05-12-2008 (05-12-2008, 01:33 PM)Sephi-Chan a écrit : Ouaip, mais le problème de cette technique, c'est qu'elle gâche des ressources en éxecutant 1 ou 2 requêtes supplémentaire par page vue. C'est vite énorme.Par rapport à ça, je suis d'accord avec toi, si on peut utiliser Cron, autant le faire ^^ D'ailleurs, dès que je pourrai passer en hébergement définitif, je le passerai en crontab. |