Execution programmée...

Résolu
davidcian Messages postés 186 Date d'inscription vendredi 18 novembre 2005 Statut Membre Dernière intervention 19 décembre 2009 - 29 nov. 2007 à 17:12
davidcian Messages postés 186 Date d'inscription vendredi 18 novembre 2005 Statut Membre Dernière intervention 19 décembre 2009 - 30 nov. 2007 à 10:23
Bonjour,

Je cherche a exectuer une instruction php le matin à 10H pour le lundi, mardi, mercredi, jeudi et le vendredi.

D'ailleur je sais meme pas si ca doit etre du php ou si ca doit etre une requette qui s'execute sur le serveur...

Merci pour vos lumieres.

Az

7 réponses

davidcian Messages postés 186 Date d'inscription vendredi 18 novembre 2005 Statut Membre Dernière intervention 19 décembre 2009 1
30 nov. 2007 à 10:23
Afin d'aprondir mes recherches j'ai demandé conseille au pres d'un développeur de jeu en PHP qui utilise a outrance ce systeme, je poste sa réponce sur ce forum pour completer le sujet. Je personnelement testé ce procédé ca marche assé bien malgré la quantitée astronomique d'execution:

"
Donc comment je fais les tours de saihan ?

Bah à chaque fois que tu charges une page de saihan, n'importe laquelle
(attaque, ordre de marche, faire un mouvement, recruter une troupe,
envoyer une missive, blablabla, etc, etc, etc), de manière "invisible",
j'effectue le tour d'un joueur, en commençant par le plus proche
possible qui n'aurait pas encore changé de tour.


Donc ça commence par toi, puis par les ennemis juste à côté de toi, puis plus loin, etc...

Donc en fait, ça ne se passe pas "toutes les heures", ça se passe chaque fois que quelqu'un affiche une page quelconque.

Donc ça peut aller très vite (compte combien de pages tu charges quand
tu joues ^^), mais si personne ne se connecte sur le jeu pendant 2
heures, bah absolument rien n'est fait, et les tours ne seront faits
que lorsque quelqu'un se reconnectera.


C'est pour ça que j'appelle ça de la gestion de tour
"semi-automatique", parce qu'en fait, je compte sur le fait que tu
affiches plusieurs pages avant la moindre vraie action pour être sûr
que tous les ennemis, alliés et castels à portée ont eu leur nouveau
tour (si besoin est), mais rien ne se fait tout seul normalement ^^


(donc si tu as bien compris : si tu te connectes, et que tu tentes
d'attaquer un castel le plus vite possible, tu peux te retrouver à
l'attaquer avant que le tour de l'ennemi soit passé et que ses
constructions se soient faites, lol ! Mais c'est rare ^^)


Bref, voilà comment moi je fais, mais du coup, ça alourdit à mort le jeu.

Sur Saïhan, c'est malheureusement indispensable, parce qu'on a besoin
d'une "interactivité" et d'un temps réel total (imagine si t'étais
obligé de te connecter toutes les heures pour que tes castels
construisent ! On s'ennuierait vite ^^), mais sur la plupart des autres
jeux, le jeu se contente de faire juste ton tour à toi, et donc le jeu
est plus rapide (mais les adversaires que tu affrontes ne sont jamais
vraiment à jour)


Je crois qu'il existe un moyen, un logiciel dont je ne connais pas le
fonctionnement, qui s'appelle "cron" ou quelque chose du genre, qui
exécute des scripts php tout seul à horaire régulier. Mais si tu mets
trop de choses à gérer, c'est comme pour une page de saihan :
l'affichage implose et ton site lag à mort de toute manière !


Donc le meilleur conseil que je peux te donner en la matière c'est de
faire en sorte que ton jeu ne fonctionne pas comme ça et soit assez
léger dans les choses à gérer.


Alors je sais, la plupart des vieux jeux php genre ogame fonctionnent
avec un système de temps de résolution des actions, mais en fait, foi
de programmeurs, et je serais pas le seul à te le dire, c'est un des
systèmes les plus lourds et les moins pratiques à gérer !

C'est comme rouler avec un vélo avec des roues carrées : c'est terriblement difficile à faire et ça sert à que dalle !


Mais hélas comme ogame et autres sont très connus, les joueurs qui
veulent programmer des jeux tentent de refaire la même chose, au lieu
de construire des vélos avec des roues rondes, ce qui est dix fois plus
rapide, facile et gérable, même dans le jeu !

Donc je pense que comme tout le monde (et comme moi même au début) tu
vas surement tenter de coder un truc avec des temps de résolution
d'ordres. Mon conseil : oublie ça tout de suite !

Bon, évidemment, je m'attends pas à ce que ça te soit facile : quand on
est habitué à un certain système de jeu, on a du mal à trouver de
meilleures idées, mais faut absolument t'obliger à faire mieux que ça,
sinon tu galèreras à mort comme moi et tout nos prédécesseurs, lol !


Idem pour les villes qui produisent, avec des stocks et tout, comme
dans Saïhan : c'est l'enfer sur terre à coder et à gérer ! Ca fait
fumer ton jeu pour que dalle ! Profite de mes erreurs et fais mieux que
ça, parce que si tu pars sur une idée pareille, tu vas galérer à mort,
comme moi, pour absolument aucun résultat intéressant !

Les jeux php, c'est pas des jeux vidéos : ça marche pas pareil, et
gérer des stocks ou des résolutions d'ordres, c'est l'enfer sur terre,
lol !


J'espère que ça t'aidera à éviter de refaire les même erreurs et à trouver des trucs nouveaux et bien plus faciles ^^"

Je vais donc suivre ses indactions, bien que j'esperais un autre systeme.

Az
3
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
29 nov. 2007 à 18:00
Salut,

Ce serait pas mal de faire l'effort de chercher un peu avant de poster... La question a déjà été posée il y a 3 jours :
http://www.phpcs.com/infomsg_SCRIPT-LANCE-TOUT-SEUL_1040397.aspx#4
0
davidcian Messages postés 186 Date d'inscription vendredi 18 novembre 2005 Statut Membre Dernière intervention 19 décembre 2009 1
29 nov. 2007 à 19:09
webcron est un programme tiers sur le quelle il peut ce produire des pannes des mise a jours ect...

Quand au planifacteur de tache... sur un serveur distant je vois pas comment le mettre en oeuvre.

J'orientais plus mes recherches vers robot ou quelque chose du genre.

Merci quand meme de ta réponce.

Az
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
29 nov. 2007 à 19:14
Effectivement, quand on utiliser webcron on est dépendant de la qualité de ce service...

T'as un hébergement dédié ou un mutualisé ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
davidcian Messages postés 186 Date d'inscription vendredi 18 novembre 2005 Statut Membre Dernière intervention 19 décembre 2009 1
29 nov. 2007 à 21:36
Pour l'instant je développe en local j'ai pas encore choisis mon hebergeur.

Az
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
29 nov. 2007 à 21:57
Ok.
Si tu as absolument besoin de pouvoir programmer l'exécution d'un script, il faut que tu prennes ça en considération dans ton choix.

Sur Windows, le service qui permet ça, c'est le plannificateur de tâches.
Sur Linux, c'est crond, qui se paramètre via le fichier crontab.

Pour pouvoir accéder à ces services, la plupart du temps, il faut avoir un serveur dédié. C'est la seule alternative qui te permet de faire ce que tu veux sur ton serveur. Sauf que ça coute cher.
Certains hébergeurs proposent des serveurs privés : c'est une couche logicielle qui simule un serveur dédié et permet d'en héberger plusieurs sur une même machine.
Ces deux options te garantissent à coup sûr de pouvoir gérer crond en SSH (une tite recherche sur Wikipedia), c'est à dire en ligne de commande.

Certains hébergeurs permettent cependant de configurer crond via une interface d'administration propriétaire. C'est le cas de 1&1 avec certains packs.
Certains hébergeurs fournissent parfois un accès SSH sur un serveur mutualisé (c'est assez rare).

Quoi qu'il en soit, pour pouvoir programmer l'exécution d'un script, il faut obligatoirement passer par un programme tiers, puisque ni Apache ni PHP ne peut le faire.

Il y a cependant une manière de faire semblant. Ca consiste à exécuter le script au premier affichage d'une page du site, après la date passée.
Par exemple, tu programmes l'exécution à 10h, lorsqu'un visiteur se pointe sur ton site à 10h30, puisque l'heure est dépassée, le script est exécuté.
Y'a une source postée récemment sur phpCS qui permet de faire ça. Je ne sais pas ce qu'elle vaut, mais c'est en tout cas son but.

La dernière solution consiste à s'appuyer sur un service tiers, comme c'est le cas de webcron. Webcron gère un cron sur son serveur, qui exécute un script distant selon les paramètres que chaque utilisateur a configuré. Donc t'es dépendant de la qualité du service, tu n'es pas à l'abri des bugs, des pannes, des maintenances, etc.

Voilà. Je pense que j'ai dit l'essentiel pour ton choix d'hébergeur.
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
29 nov. 2007 à 22:25
Hello,

"un robot"...via le planificateur de tâche de TA machine (ou cron si tu es sous linux), tu peux très bien lancer une requête web sur une page...par exemple, la page contenant le script que tu veux exécuter.
Mais il faut que ta machine soit allumée à ces moments là.
Hormis cron sur le serveur web, une tâche sur ta machine locale, ou webcron, point de salut à part le "cheat" que donne Neige : au premier visiteur qui arrive à partir de l'heure/jour fatidique, tu exécutes ton script.
PHP n'est pas un langage persistant, il n'est pas fait pour ça.
0
Rejoignez-nous