logo Homepage
+  NewbieContest
|-+  Programmation» Langages Web» [PHP] Execution automatique de script
Username:
Password:
Pages: [1]
  Imprimer  
Auteur Fil de discussion: [PHP] Execution automatique de script  (Lu 5608 fois)
Snake046
Invité
« le: 14 Août 2006 à 19:28:51 »

Mesdames messieurs, KON BANWAAAAA !

Bon, alors je suis toujours sur mon pitit jeu (14570 lignes depuis ma première question), et j'en arrive à un (enfin, deux en fait) autre problème !

J'ai crée mon script pour actualiser la base de donnée. Je voudrais faire, pour une partie de la BDD, une évolution par tour : tout les soirs à minuit, paf, comme par de la magie, ce script s'execute !
Enfin je sais pas vraiment comment faire ça ? Sur d'autres jeux par navigateur comme BattleCorp, toutes les 48 heure, un cycle passe... et je comprend pas comment ils ont fait.

De même, voici un deuxième problème, qui entre dans la même catégorie. Comment faire des actions à retardement ? Enfin, pas du script qui s'arrête pour reprendre quelques temps plus tard, mais par exemple, une action prendrait une heure. Je ne comprend pas vraiment comment faire ça ?
Je verrais bien une liste d'actions dans la BDD, mais je ne saurais comment faire pour qu'elles s'executent à l'heure dite.

Et j'ai même un troisième problème, du même genre que pour le second.
Je voudrais que la valeure d'une colonne évolue de minute en minute, à une vitesse qui peut différer entre plusieurs lignes.

Enfin bref... tout ces problèmes sont dans le même genre en gros : j'ai réussi grâce à vous à accomplir pas mal de choses dont je ne me serais jamais cru capable : les seules limites sont les miennes, et je les ai pas mal repoussé ces derniers temps ! Mais ce genre de choses restent toujours un mystère pour moi !
Journalisée
the lsd
Administrateur

Profil challenge

Classement : 183/55046

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 3098

poulping for fun & profit


Voir le profil WWW
« #1 le: 15 Août 2006 à 00:47:45 »

Pour le premier probleme renseigne toi sur les Crons (google -> Webcron ) je ne sais pas exactment coment ca marche mais ca consiste a executer une page precise a une heure precise.

Pour le deuxieme probleme je ne sais pas du tout et d'ailleurs ca m'interresserait de savoir egalement. Pour le reste, ben je sais pas non plus mais ca m'interrese pas pour le coup

Enjoy

The lsd
Journalisée

Newbie Contest Staff :
The lsd - Th3_l5D (IRC)
Statut :
Administrateur
Citation :
Cartésien désabusé : je pense, donc je suis, mais je m'en fous !
Perfect Slayer

Profil challenge

Classement : 3031/55046

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 1974


Voir le profil WWW
« #2 le: 15 Août 2006 à 08:24:04 »

Pour le 1er j'suis d'accord avec the lsd.
Pour le 2nd, il y a toujours la fonction sleep().. Mais pour une pause d'une heure : je sais pas si c'est top.. (penses à régler le set_time_limit..). Sinon tu peux toujours enregistrer (dans une BDD par exemple), une liste d'action et lancer un script en non-stop qui vérifie les actions à faire en temps réel..
Pour le 3eme, je ne comprends pas tres tres bien..
Journalisée

Newbie Contest Staff :
(¯`·._.· [ Perfect Slayer ] ·._.·´¯)
Status :
Administrateur / Programmeur PHP / Optimisateur
Citation :
Sécurité, efficacité et rapidité riment avec Perfect(ion)
the lsd
Administrateur

Profil challenge

Classement : 183/55046

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 3098

poulping for fun & profit


Voir le profil WWW
« #3 le: 15 Août 2006 à 12:51:08 »

Moi j'aurais pas fait comme toi Perfect parce que le coup de set_time_limit ou de lancer un script en non stop je trouve ca bof (en meme temps toi tu sais coder un scanner donc je devrais me taire )

Pour ton deuxieme probleme Snake046 en fait je pense que tu peux jouer avec ton timestamp : explication

Par exemple imaginons que quelqu'un fasse ton action a 13 H45 le lundi 20 aout 2006 hop, tu rentres ca dans la BDD dans un champ crée uniquement pour ca. Ensuite tu fais une condition dans ton script qui dis par exemple :

Code:
if ($timestamp > $timestampbdd + 1337)
{
//tes instructions
}
else
{
echo 'Veuillez patientez encore un peu...' ;
}
avec $timestamp le timestamp actuel, au moment ou est lancé le scritp et $timestampbdd le timestamp inscrit par l'user. les 1337 ()sont donc les secondes en plus. Donc si le timestamp actuel est superieur au timestamp enregistré plus le temps d'attente, c'est ok.

J'espere que c'est bien cela que tu voulais

Enjoy

The lsd
Journalisée

Newbie Contest Staff :
The lsd - Th3_l5D (IRC)
Statut :
Administrateur
Citation :
Cartésien désabusé : je pense, donc je suis, mais je m'en fous !
Snake046
Invité
« #4 le: 15 Août 2006 à 17:18:58 »

Pour WebCron ça m'a l'air bien... ça ira donc avec ça.

Par contre, il me semble que sleep() ne permette pas au joueur de quitter le jeu, se déconnecter ou que sais-je, nan ? Enfin il me semble bien avoir compris ça.
De plus, ça peut être lourd pour le serveur ça, autant de script executé en même temps si ya par exemple 30 actions simultanées ?

Pour le timestamp :
Ta solution me parait interessante, car si j'ai bien compris, il faut executer tout de même le script. J'ai encore un peu de mal à visualiser ce que je voudrais obtenir avec celle-là...

Une page attaques en cours.
Une page constructions en cours.
Le script d'attaque définit le timestamp du jour du lancement de l'attaque, les 6 types de troupes attaquantes, la référance du territoire/ville attaqué, le nom d'empire du joueur attaquant.
La liste d'attaque en cours verifie le timestamp, si il est supérieur à un certain nombre de seconde, un formulaire envoie à la page de combat le contenu des 6 colonnes de troupes attaquantes correspondante à l'attaque. Si le timestamp est trop supérieur au nombre dit, les troupes ont désertées et la ligne est supprimée, j'évite ainsi des abus.
De même pour le script de construction de vaisseau... allez, ça devrait aller ! Je m'y lance ! Merci !
Journalisée
Perfect Slayer

Profil challenge

Classement : 3031/55046

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 1974


Voir le profil WWW
« #5 le: 16 Août 2006 à 19:57:36 »

Oui pour le sleep(), il faut que la page soit toujours exécutée.. Mais l'inconvénient de the_lsd est qu'il faut qu'un script soit relancé..
Journalisée

Newbie Contest Staff :
(¯`·._.· [ Perfect Slayer ] ·._.·´¯)
Status :
Administrateur / Programmeur PHP / Optimisateur
Citation :
Sécurité, efficacité et rapidité riment avec Perfect(ion)
the lsd
Administrateur

Profil challenge

Classement : 183/55046

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 3098

poulping for fun & profit


Voir le profil WWW
« #6 le: 16 Août 2006 à 21:41:25 »

Citation de: Perfect Slayer
Mais l'inconvénient de the_lsd est qu'il faut qu'un script soit relancé..
C'est vrai j'y ai pensé mais j'ai pas trouver de meilleur solution. Le probleme aussi avec sleep c'est que si les actions a retardements durent des heures il ne faut pas fermer la page pendant des heures, c'est ca qui m'embetait un peu.

Enjoy

The lsd
Journalisée

Newbie Contest Staff :
The lsd - Th3_l5D (IRC)
Statut :
Administrateur
Citation :
Cartésien désabusé : je pense, donc je suis, mais je m'en fous !
Perfect Slayer

Profil challenge

Classement : 3031/55046

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 1974


Voir le profil WWW
« #7 le: 16 Août 2006 à 21:48:18 »

Lol et avec microsleep() ?


La fatigue se ressent..
Journalisée

Newbie Contest Staff :
(¯`·._.· [ Perfect Slayer ] ·._.·´¯)
Status :
Administrateur / Programmeur PHP / Optimisateur
Citation :
Sécurité, efficacité et rapidité riment avec Perfect(ion)
Pages: [1]
  Imprimer  
 
Aller à: