Bonjour,
je suis en train de créer un jeu en php/MySQL (style ogame pour les connaisseurs) mais se déroulant au moyen age (http://img99.imageshack.us/img99/4555/gamesi.png)
La charte graphique est établie ainsi que le le code de "bas niveau" mais là je rentre dans le dur
En fait, j'ai créé une table events de la forme suivante :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 CREATE TABLE `events` ( `id_event` int(10) unsigned NOT NULL AUTO_INCREMENT, `id_joueur` int(10) unsigned NOT NULL, `type_event` varchar(2) NOT NULL, `villagois` int(10) unsigned NOT NULL, `date_event` int(10) unsigned NOT NULL, PRIMARY KEY (`id_event`), KEY `id_joueur` (`id_joueur`), CONSTRAINT `events_ibfk_1` FOREIGN KEY (`id_joueur`) REFERENCES `joueurs` (`id_joueur`) ON DELETE CASCADE ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
Cette table est destinée à recevoir des événements futurs comme la création d'un villageois qui n'interviendra que 2h après sa création par exemple ou alors l'attaque d'un joueur par un autre joueur n'intervenant que 5466, 3750 etc...secondes plus tard après le lancement de l'attaque.
La problématique étant d'exécuter la requete future à la seconde près lors de l'événement (notamment l'attaque).
Pour l'instant, je compte m'orienter vers la création d'une classe de ce type :
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 set_time_limit(0); ignore_user_abort(1); class Scheduleur{ function Scheduleur(){ while(1) { //Mon code de scan table + execution requete sleep(/*un parametre a determiner en fonction du prochain evenement */); } } }
Cette classe marchera sans trop de problème je pense mais a un inconvient majeur : si le serveur reboot il faut relancer cette classe et je n'ai pas trouvé comment lancer automatiquement une classe lors d'un boot serveur (Apache).
Mis à part un scan régulier de ma table evenements, je ne vois pas trop comment executer des requetes frequemment et à intervalles de temps variables...
Comment feriez vous de votre coté ?
Merci de vos remarques/suggestions
Partager