TourDeJeu, le réseau des jeux en ligne alternatifs : jeux web multijoueurs, jeux par forum. En savoir +

Flux RSS des discussions du forum : pour les joueurs, et pour les créateurs et MJ
  Reply to this topicStart new topicStart Poll

> Cheche Compte A Rebour En Php
-=[ X-ZoD ]=-
Ecrit le : Mardi 01 Mars 2005 à 00h05
Quote Post


Pro
*

Groupe : Membre
Messages : 157


pkoi en php ?
pour qu'il puisse effectuer une requete SQL a la fin....

j'ai deja trouver du java...mai a moins d'apler une autre fenetre qui contient un code php bha il n'y a aucun moyen de fondre le php ds le java...j'espere trouver d'autres programmeur ici ou tout simplement des internautes qui ont trouvé le script [bien que je considere avoir eplucher toutes les pages de google]...merci d'avance


--------------------
user posted image
PMEmail PosterUsers Website
Top
khiguard
Ecrit le : Mardi 01 Mars 2005 à 00h59
Quote Post


Ouf
*

Groupe : Membre
Messages : 732


Ca dépend ce que tu voudrais faire, si c'est un rafraichissement de page, fait le en javascript.
@+


--------------------
Alonya : Jeu de gestion/stratégie par partie.
Sombre Destin : Jeu de gestion/stratégie massivement multi joueur.
Antre du Cercle des Dragons Noirs: portail jdr | G-nerik: Système générique de jdr
PMEmail PosterUsers Website
Top
Nonothehobbit
Ecrit le : Mardi 01 Mars 2005 à 02h31
Quote Post


Alien
*

Groupe : Moderateurs
Messages : 1298


Si tu veux un compte à rebours "client", c'est-à dire fait par l'utilisateur, utilise un meta refresh, ou du javascript comme l'a dit khiguard.

Si tu veux un compte à rebours "serveur", c'est à dire indépendant de l'action du joueur, je te conseille d'utiliser des crontab, ou la commande "at".

Cela dit, je me demande bien pour quelle utilisation tu en as besoin...

PS : quand tu dis java, c'est javascript ou java ?


--------------------
user posted image
PMEmail PosterUsers Website
Top
-=[ X-ZoD ]=-
Ecrit le : Mardi 01 Mars 2005 à 08h22
Quote Post


Pro
*

Groupe : Membre
Messages : 157


le problem n'est au niveau du java.....par exemple je souhaite faire un compte a rebour du style:
- perd 10 points de vie toutes les 45 min

du coups au bout du coumpte a rebour faudra effectuer des requetes du style

-SELECT HP from user where login like $login
blabla bla
hp=hp-45
update hp where login like $login


vou voyez au bout des 45 min il modifie la table dans la bdd.....donc le java est exclue et c'est donc un compte a rebour niveau serveur q'uil me faut....


--------------------
user posted image
PMEmail PosterUsers Website
Top
gorgu
Ecrit le : Mardi 01 Mars 2005 à 09h41
Quote Post


Ouf
*

Groupe : Membre
Messages : 417


la solution est soit dans ton crontab

soit sur chaque page "stratégiquement choisie"

tu inclu un petit test.
dans sql tu place le timestamp du dernier calcul pour monsieur toto.
sur ta page "stratégique" tu calcul le timestamp du moment -45 minutes

et tu fait un
update pointvie=pointvie-1,heurecalcul = NOW() from lesbonhommes where heurecalcul < $tempscalcul


--------------------
enfin je crois ...
Adept JDR
PMEmail PosterUsers Website
Top
-=[ X-ZoD ]=-
Ecrit le : Mardi 01 Mars 2005 à 13h18
Quote Post


Pro
*

Groupe : Membre
Messages : 157


waw ça m'a l'"air interessant....bien que je ne comprenne une partie de ce dont tu parle...

crontab par exemple [mai je vai faire une recherche sur google c po important]

QUOTE
dans sql tu place le timestamp du dernier calcul pour monsieur toto.

timestamp ? huh.gif
le dernier calcul?.....calcul de koi?


QUOTE
update pointvie=pointvie-1,heurecalcul = NOW() from lesbonhommes where heurecalcul < $tempscalcul

le now() je ne vois pas a kel fonction il renvoi et tempscalcul semble etre une variable que je ne voi pas comment declarer...


sinon selon ce que j'ai compris il faut qu'il y est un time declarer dans la base de donner et ensuite sur la page on verifie si le time de la table du user corespond a celle de la base et par la suite on decide de ce qui se pass....

mai c'est super flou dans ma tete ...dommage car ça m'a l'air super interessant.....si tu peux m'en dire plus stp avec un exemple precis ..... voir meme le code.


--------------------
user posted image
PMEmail PosterUsers Website
Top
Arckam
Ecrit le : Mardi 01 Mars 2005 à 14h24
Quote Post


Pro
*

Groupe : Membre
Messages : 137


[mode petite pique ON]
Ben alors -=[ X-ZoD ]=-, je croyais que tu assurais tongue.gif
[mode petit pique OFF]

Bon, un timestamp c'est une façon d'enregistrer la date & l'heure.
Le timestamp (un horodateur en français me dit google) correspond (par exemple) au nombre de secondes depuis le 1 janvier 1970.

Il te parle du dernier calcul... celui de tes 45 minutes tient smile.gif

C'est pas bien compliqué. Tu avais bien compris.
Chaque fois qu'un visiteur tombe sur ton bout de code tu calcules la différence entre le timestamp que tu as enregistré et le timestamp actuel.
Si elle est supérieure à 45 minutes, paf, tu calcul tes machins, puis tu enregistres un *nouveau* timestamp... et ainsi de suite.

Pour les exemples je passe, c'est vraiment pas dur, tu va y arriver sans problème.

Enfin, la crontab c'est une fonctionnalité linux (unix) qui te permet de planifier des executions de scripts nottament.
C'est comme le planificateur de tâches sous Windows, mais en plus fouillé.
C'est une solution *vraiment* plus propre que ce que je t'expliquais plus haut.

Voila, voila, bon boulot smile.gif

EDIT: J'oubliais... now() te donneras le timestamp actuel $tempscalcul c'est ton temps a toi (que tu viens de calculer).
PMEmail Poster
Top
gorgu
Ecrit le : Mardi 01 Mars 2005 à 21h51
Quote Post


Ouf
*

Groupe : Membre
Messages : 417




--------------------
enfin je crois ...
Adept JDR
PMEmail PosterUsers Website
Top
Nonothehobbit
Ecrit le : Mardi 01 Mars 2005 à 22h21
Quote Post


Alien
*

Groupe : Moderateurs
Messages : 1298


QUOTE (Arckam @ 1 Mar 2005, 13:24 )
C'est une solution *vraiment* plus propre que ce que je t'expliquais plus haut.

Mwé. Je sais pas si dans un jeu à plusieurs centaines de joueurs avec ce genre de compte à rebours dans tous les sens, la crontab est vraiment plus propre. wink.gif

PS : évitez de prendre la mauvaise habitude de racourcir javascript en java, ça fait mal aux oreilles. sweatdrop.gif (pis accessoirement, on s'emmele les pinceaux smile.gif)


--------------------
user posted image
PMEmail PosterUsers Website
Top
Arckam
Ecrit le : Mercredi 02 Mars 2005 à 10h32
Quote Post


Pro
*

Groupe : Membre
Messages : 137


Dans un jeu avec plusieurs centaines de joueurs tu t'arranges surtout pour traiter ça differemment smile.gif

En ce qui me concerne je ferais tourner un script léger (le plus léger possible) à intervalle de temps régulier (toutes les secondes, ou toutes les minutes par exemple) pour traiter en une seule passe tous les joueurs qui tombent dans cette intervalle. Ca fait un seul appel, et pas des cron dans tous les sens tongue.gif

Dans un monde parfait je ferais ça dans un autre langage d'ailleurs, plutot qu'en PHP (à moins que le php ne gère les threads ? je ne me suis jamais posé la question tient smile.gif).
PMEmail Poster
Top
naholyr
Ecrit le : Mercredi 02 Mars 2005 à 11h10
Quote Post


Ouf
*

Groupe : Membre
Messages : 423


QUOTE (Arckam @ 2 Mar 2005, 10:32 )
Dans un monde parfait je ferais ça dans un autre langage d'ailleurs, plutot qu'en PHP (à moins que le php ne gère les threads ? je ne me suis jamais posé la question tient smile.gif).

PHP n'est pas thread-safe.
Et puis quite à utiliser des threads je ne vois pas pourquoi on n'utiliserait pas crontab whistling.gif
un petit cron qui appelle toutes les 5 minutes (l'idéal serait toutes les minutes, mais ne soyons pas trop fou) un script qui va bien, et puis c'est reglé, sans trop encombrer le serveur.

Cela dit, personnellement je ne suis pas fan des solutions trop côté serveur, en particulier crontab. J'aime imaginer que je peux poser mon site n'importe où, même si je n'ai pas la possibilité d'accéder au crontab sur le serveur wink.gif

Donc la solution expliquée par Arckam (présentée par gorgu) a ma préférence.
PMEmail PosterUsers WebsiteICQYahoo
Top
Arckam
Ecrit le : Mercredi 02 Mars 2005 à 12h30
Quote Post


Pro
*

Groupe : Membre
Messages : 137


On va croire que j'essaie d'avoir le dernier mot smile.gif

En fait, en y reflechissant, je me dit que tout dépend de ce que tu vises.

La solution qui récolte le plus de suffrages (étonnament à mon sens, mais bref) est celui du bout de code. Seulement d'après moi cette solution n'est viable que sur un petit nombre de visiteurs. Passé un certain cap tu risques d'avoir un overhead insupportable. Maintenant de là à définir ce nombre ... smile.gif

La solution du cron, plus efficace déjà, sous entend d'avoir accès à une machine (pas forcemment ton serveur). Il existe webcron d'ailleurs qui est bien utile. Je disais plus efficace car tu peux effectuer en un seul appel toutes tes opérations, et donc améliorer le déroulement de tes mises à jour. En plus, l'overhead lié à tes mises à jour n'est plus dépendant de l'affluance sur ton site, ce qui est franchement un avantage.

La dernière solution, le compilé (avec ou sans threading d'ailleurs), généralement inapplicable dans notre cas, est sans aucun doute la plus efficace. Mais d'une part tu dois pouvoir lancer un executable et d'autre part tu n'est effectivement plus aussi portable (ceci dit, c'est déjà le cas, je parie que 90% des jpc's ne seraient pas capable de passer de mysql à postgre sans recoder une bonne partie).

Bref, on s'éloigne smile.gif
Tout ça pour dire que dans ton cas (peu de joueur, du moins maintenant, et peu d'opérations) effectivement la technique du bout de code sera efficace.
PMEmail Poster
Top
naholyr
Ecrit le : Mercredi 02 Mars 2005 à 12h41
Quote Post


Ouf
*

Groupe : Membre
Messages : 423


QUOTE (Arckam @ 2 Mar 2005, 12:30 )
La dernière solution, le compilé (avec ou sans threading d'ailleurs), généralement inapplicable dans notre cas, est sans aucun doute la plus efficace. Mais d'une part tu dois pouvoir lancer un executable et d'autre part tu n'est effectivement plus aussi portable (ceci dit, c'est déjà le cas, je parie que 90% des jpc's ne seraient pas capable de passer de mysql à postgre sans recoder une bonne partie).

C'est là que je ne te comprends pas. En quoi une appli qui tourne en arrière plan (un service ?) qui va faire les mises à jour à intervalle régulier serait plus efficace qu'un crontab (qui fait à la virgule près exactement la même chose blink.gif ) ?
PMEmail PosterUsers WebsiteICQYahoo
Top
Arckam
Ecrit le : Mercredi 02 Mars 2005 à 13h43
Quote Post


Pro
*

Groupe : Membre
Messages : 137


Ton cron appellera un script php, alors que tu pourras très bien tout faire dans ton appli, et donc profiter des avantages qu'un langage compilé t'apporte.
PMEmail Poster
Top
-=[ X-ZoD ]=-
Ecrit le : Mercredi 02 Mars 2005 à 13h57
Quote Post


Pro
*

Groupe : Membre
Messages : 157


bha arcam j'ai dit que jme debrouilllais mais j'ai pas dit que je taffais deja dans une boite wink.gif

en tout cas merci a toi effectivment ta methode m'a l'air supra interessante a l'exception que je pourai pas afficher le compte a rebour a l'ecran....mais bon ça je verrais quand le jeu commencera a devenir tres propre..je pofinerais..

Gorgu merci a toi aussi pour le soutien ek ta page...je pensais deja chercher mais tu me fai gagner po mal de temps wink.gif


--------------------
user posted image
PMEmail PosterUsers Website
Top
gorgu
Ecrit le : Jeudi 03 Mars 2005 à 03h17
Quote Post


Ouf
*

Groupe : Membre
Messages : 417


pour la charge...

ouaif...

j'ai un peu des deux méthodes, 400 joueurs... et c'est pas cette partie là qui fait le plus mal au serveur wink.gif virez les phpbb et autres objets mal foutus avant de vous lancer dans ce niveau d'optimisation wink.gif


--------------------
enfin je crois ...
Adept JDR
PMEmail PosterUsers Website
Top
Sybler
Ecrit le : Mardi 05 Avril 2005 à 20h30
Quote Post


Ouf
*

Groupe : Membre
Messages : 453


Il existe une autre methode, j'ai personnellement opté pour cette méthode afin d'assurer une compatibilité maximal en cas de changement rapide de serveur.

Le calcul de temps désyncronisé.
Il suffit d'attendre qu'un joueur (n'importe qui) demande une page sur le site.
Du coup, tu fait un code qui calcul si les 10 minutes sont écoulé depuis la derniere page, si oui, calculer combien de tranche de 10 minutes se son écoulé et exécuter la requete.

Voilà, j'explique pas plus car c'est relativement complexe à coder dépendament de ton niveau, donc je n'entre pas trop dans les détails vu que cette méthode risque fort d'etre écartée smile.gif


L'avantage pas contre, c'est que cronjob va exécuter disons 1000 requetes au 10 minutes d'un seul coup, alors qu'avec une méthode désynchroniser, le début du 10 minutes peut etre différent pour chaque joueur, et donc éviter une tonne de requete simultanée.


--------------------
user posted image
PMEmail PosterUsers Website
Top
Sybler
Ecrit le : Mercredi 27 Avril 2005 à 19h29
Quote Post


Ouf
*

Groupe : Membre
Messages : 453


Sinon:

Tu met un petit iframe qui affiche un compte à rebour en JavaScript. Lorsque ce compte à rebourd est finit, tu fais une redirection vers une page PHP qui démarre un nouveau compte à rebourd... et évidament, qui fait ta requete.

Ca évite de recharger toute ta page pour faire une seule requete pendant qu'un joueur tappe un gros texte en fait smile.gif



--------------------
user posted image
PMEmail PosterUsers Website
Top
-=[ X-ZoD ]=-
Ecrit le : Samedi 30 Avril 2005 à 23h39
Quote Post


Pro
*

Groupe : Membre
Messages : 157


ta premiere idee sybler bha j'ai opté pour la meme chose au debut...d'ailleur je l'utilise encor biggrin.gif

mai t'a deuxieme methode est interessante smile.gif

meme tres interessante vai me pancher dessus wink.gif

merci pour le coup de main


--------------------
user posted image
PMEmail PosterUsers Website
Top
« Sujets + anciens | Programmer | Sujets + récents »

Reply to this topicStart new topicStart Poll