Créer son jeu en PHP

Tout pour créer soit-même son jeu en PHP
 
AccueilAccueil  ­CalendrierCalendrier  ­FAQFAQ  ­RechercherRechercher  ­S'enregistrerS'enregistrer  ­MembresMembres  ­GroupesGroupes  ­ConnexionConnexion  
Poster un nouveau sujet   Répondre au sujetPartager | 
 

 Lancer un script PHP. Tache cron ou trigger SQL ?

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Genova
Invité



MessageSujet: Lancer un script PHP. Tache cron ou trigger SQL ?   Lun 6 Fév - 16:44

Bonjour,
je suis actuellement en train de developper un jeu PHP de gestion / strategie. Pour faire simple, lorsque qu'un joueur A attaque un joueur B par exemple, je souhaiterai defenir quelque chose qui me permette d'executer independament sur le serveur le script PHP calculant l'attaque au moment ou celle ci a ete prevue.

Le nombre d'attaques geres devrait etre assez important, par exemple il faudrait que le systeme gere la possibilite de plusieurs attaques sumultannes.
Est ce qu'une tache cron pour chaque attaque lancee suffirait ? Est il possible de definir des triggers permettant de lancer un binaire (php en l'ocurence) sur une base de donnee ? Si oui sur quel type de base de donne ? (mysal 5 gerant les triggers qu'au niveau des requetes).

Merci d'avance pour vos reponses
Revenir en haut Aller en bas
k4dw4
Langue pendue


Nombre de messages: 95
Date d'inscription: 02/01/2006

MessageSujet: Re: Lancer un script PHP. Tache cron ou trigger SQL ?   Lun 6 Fév - 18:52

Déja a moin de passé par CGI Chron tu laisses tomber.
(Chron s'éxécute au niveau serveur, il est donc impossible de modifié les préférences des Chrons pas PHP (genre modifié quand lance qu'elle page)).
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Lapin rouge
Langue pendue


Nombre de messages: 99
Date d'inscription: 03/02/2006

MessageSujet: Re: Lancer un script PHP. Tache cron ou trigger SQL ?   Lun 6 Fév - 20:22

Exactement.
D'ailleurs, personnellement, j'ai trouvé un assez bon systeme je trouve.

Lorsqu'un joueur A attaque un joueur B, je rentre les effectifs d'attaques dans une table, avec la date d'attaque prévue (date de l'attaque = date de l'ordre + XXX minutes, en fonction de la localistation des Cités).

Dès qu'un joueur se connecte, le script cherche si le joueur est impliqué dans une attaque (parcours la table). Si oui, il regarde la date et l'execute si elle est inférieur ou égale à NOW()...

ça marche vachement bien, aucun défaut dans ce system puisque la bataille est déclenchée dès que le premier des 2 joueurs impliqués se connecte. Si personne ne se connecte, les effectifs ne change pas donc ça ne change rien du tout... Dès la prochaine connexion, la bataille s'éxécutera et ils auront tous les 2 le bilan qui s'affichera.

Voilà, c'est juste une idée.

_________________
Follow de red rabbit.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Genova
Invité



MessageSujet: Re: Lancer un script PHP. Tache cron ou trigger SQL ?   Lun 6 Fév - 22:58

Lapin rouge, le système que tu propose est équivalent à un cron PHP. C'est ce que j'ai développé pour le moment, tant qu'une autre solution n'a pas été trouvée. Un tel système est gérable sur une faible charge mais quand le serveur subira une charge trop lourd le serveur risque de s'écrouler et la base de donnée de craquer si le joueur se connectant doit executer les taches des autres.

Parce que dans mon cas, lorsqu'il y a battaille celle ci s'executera dans ce cas si :
1) Le joueur se connecte
2) Le joueur attaqué se connecte
3) Un membre de l'alliance du joueur se connecte
4) Un membre de l'alliance de l'enemi se connecte
5) Un admin / opérateur se connecte

Sachant que ça peut entrainer ainsi un engrenage de taches impliquées, et qu'il faudrait de plus stocké qui peut ou ne peut pas éxécuter la tache en attente ... Une vraie galère :/

Je vais donc me tourner vers chron, je ne dispose pas de serveur dédié pour le moment, donc je ne pourrais pas le paramétrer. Je vais me contenter de mon "cron" PHP en attendant.

Si vous avez d'autres suggestions je suis preneur, merci bien.
Revenir en haut Aller en bas
Pio154
Grand habitué


Nombre de messages: 222
Age: 16
Date d'inscription: 16/04/2006

MessageSujet: Re: Lancer un script PHP. Tache cron ou trigger SQL ?   Mar 25 Avr - 8:50

Ses sur !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.traficimages.goldzoneweb.info/
Tjanzi
Modérateur JeuPHP


Nombre de messages: 570
Localisation: devant mon ordi.
Date d'inscription: 01/08/2005

MessageSujet: Re: Lancer un script PHP. Tache cron ou trigger SQL ?   Mar 25 Avr - 13:45

Bonjour,

Pio154 ne flood pas s'il te plait et si tu n'as pas besoins d'informations supplémentaire, ne remont pas les sujets qui date s'il te plait .

Merci de ta compréhension,

Tjanzi.

_________________

Venez voir mon chien.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.animals-superstars.com/photo-12526.html
Korfuri
Grand habitué


Nombre de messages: 201
Date d'inscription: 20/11/2005

MessageSujet: Re: Lancer un script PHP. Tache cron ou trigger SQL ?   Mer 26 Avr - 0:26

Lapin rouge a écrit:
Lorsqu'un joueur A attaque un joueur B, je rentre les effectifs d'attaques dans une table, avec la date d'attaque prévue (date de l'attaque = date de l'ordre + XXX minutes, en fonction de la localistation des Cités).

Dès qu'un joueur se connecte, le script cherche si le joueur est impliqué dans une attaque (parcours la table). Si oui, il regarde la date et l'execute si elle est inférieur ou égale à NOW()...


(oui je sais, pas faire remonter, mais bon il est déja en haut)

Il y a un problème. Il faut que à la première connexion de n'importe quel joueur, impliqué ou non, tous les combats à éxécuter le soient. Et encore.

Parce que sinon, il peut y avoir un problème : Imagine 3 joueur, A, B et C.
A attaque C à 20h, le combat aura lieu à 22h, et A a toutes les chances de perdre.
B attaque C à 20h30, le combat aura lieu à 22h30 et B a toutes les chances de gagner.

Imaginons que C ne se connecte pas du tout.
A va faire un billard et ne rentrera pas sur son PC avant minuit.
B est un gros geek à 22h31 il se connecte et lamine les défenses de C.
A rentre, se connecte, ça lance son attaque (à minuit) et bam ! les défenses de C sont tombées à 22h31, donc il passe alors qu'il aurait logiquement du perdre...



Genova, ce que tu peux faire, c'est que pour chaque combat tu ajoutes 4 champs :
- attaquant_connecte
- defenseur_connecte
- allie_att_connecte
- allie_def_connecte

Si un mec n°id se connecte, tu fais un :
Code:
UPDATE combats SET defenseur_connecte = 1 WHERE defenseur = $id
UPDATE combats SET attaquant_connecte = 1 WHERE attaquant = $id
UPDATE combats SET allie_att_connecte = 1 WHERE attaquant IN (SELECT id FROM alliances WHERE ....)
UPDATE combats SET allie_def_connecte = 1 WHERE defenseur IN (SELECT id FROM alliances WHERE ....)


Les "..." dépendent après de la structure de ton système d'alliance

Quand un admin se connecte, tu éxécutes tous les combats qui ont tous leurs champs "xxxx_connecte" à 1.

(En même temps je comprends pas : comment l'attaquant pourrait lancer son attaque sans être connecté ? On peut peut-être économiser un champ, là)

_________________
Editeur PHP : Kwrite
Serveur maison : Linux SuSE OSS 10.0 + Apache 2.0.54 + PHP 4.4.0 + MySQL 5.1.6-alpha + phpMyAdmin 2.6.4-pl3
Hébergement : free.fr
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
 

Lancer un script PHP. Tache cron ou trigger SQL ?

Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Créer son jeu en PHP :: GÉNÉRAL :: Les logiciels-
Poster un nouveau sujet   Répondre au sujet