IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

[SQL] Cron et SQL


Sujet :

PHP & Base de données

  1. #1
    Invité
    Invité(e)
    Par défaut [SQL] Cron et SQL
    Bonjour,

    Voila je suis a la fin de la réalisation d'un rpg. Ce rpg se base sur un principe : la fatigue, lorsqu'on fait des actions,ça dépense la fatigue, et lorsqu'on fait dormir notre personnage, il en regagne mais reste endormi pendant une certaine periode.

    PROBLEME : actuelement en local j'ai un cron qui tourne toute les minutes pour ajouter un point de fatigue aux gens qui dorment.
    Mais chez mon hébergeur (mutualisé gratuit, oympe-network) j'ai pas acces aux cron. Et les système de cron libre permettent pas le cron / minute

    QUESTION : y'a t i un autre moyen de faire ceque je veux ? j'ai pensé a un trigger qui a chaque selection sur la fatigue, va voir quand le joueur s'est endormi, quand il a le reveil et en déduit la fatigue, mais les trigger sur select c pas possible

    enfin voila

  2. #2
    Membre confirmé Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Points : 547
    Points
    547
    Par défaut
    je vois pas très bien comment les gens se mette "à dormir" sur ton rpg , mais si tu as la possibilité de savoir à quel heure précise les gens mettent leur personnage à dormir, il suffit de créer un script qui lorsqu'il sera appelé mettra à jour les point de fatigue du personnage , il te suffira de réalisation des opération sur les dates, des soustractions etc..

    d'une manière générale beaucoup de script fonctionne comme cela, par exemple, la liste des gens connectés sur un site, elle n'est actualisé que lorsqu'un utilisateur se connecte, elle n'est jamais actualisé toute les x minutes.
    I don't know what will be used in the next world war, but the 4th will be fought with stones. - Albert Einstein
    Pour détourner un avion, il faut monter dedans - Frédéric beigbeder

  3. #3
    Invité
    Invité(e)
    Par défaut
    Ben en fait ça m'embète un peu de faire un truc "aléatoire" , c'est a dire que je sais pas quand ça sera executé. Mais bon ça me semble une solution envisageable : a chaque fois que quelqu'un arrive sur une page ou sa fatigue perso ou celle d'un adversaire est calculée, alors je recalcule la fatigue de tout le monde

    si y'a d'autre idée je suis preneur.

    Par exemple comment fonctionne un jeux comme nainwak (le système de pa) ?

  4. #4
    Membre confirmé Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Points : 547
    Points
    547
    Par défaut
    c'est pas que tu ne sauras pas quand ce sera exécuté. c'est que de toute façon, gràce à ce script, tout utilisateur qui se connecte aura directement accès aux dernières mise à jours , du coup lui va penser que cela se fait en continue alors que tout à été actualisé gràce à sa venue

    imagine que plus personne ne va sur developpez.com à partir de maintenant, et ben la liste sur la homepage des gens connecté contiendra toujours les même gens! jusqu'à ce que quelqu'un se connecte pour relancer le script de detection de gens en ligne
    I don't know what will be used in the next world war, but the 4th will be fought with stones. - Albert Einstein
    Pour détourner un avion, il faut monter dedans - Frédéric beigbeder

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Points : 624
    Points
    624
    Par défaut
    Il faut recalculer la fatigue d'une perso a chaque fois qu'on a besoin de l'information... Pour cela, le mieux, c'est de mettre dans ta table User un champs int dans lequel tu met le timestamp unix (et non SQL) a chaque fois que tu recalcul la fatigue...

    user(id_user, [...], fatigue_user INT(11), datefatigue_user INT(11))
    Ainsi, tu peux écrire une petite requete du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    update user set  fatigue_user = fatigue_user +round(('.time().' - datefatigue_user) / 60), datefatigue_user = '.time().' where id_user = '.$id.' limit 1
    que tu execute a chaque fois que quelqun ouvre la fiche du joueur, ou a chaque rechargement de la page pour le joueur que tu incarnes...
    Si vous avez un message d'erreur, n'oubliez pas de le lire, la réponse à votre problème est surement dedans !

  6. #6
    Invité
    Invité(e)
    Par défaut
    j'avais pensé à ça (d'où l'idée du trigger sur un select ^^) mais ça m'embête de retourner voir un peu partout ou on utilise la fatigue (je sais j'ai pas développé ça comme un vrai pro).
    Dernière modification par julp ; 22/03/2008 à 10h59. Motif: grossièreté

Discussions similaires

  1. [MySQL] timer ou cron PHP/SQL
    Par renzukoken dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 10/06/2011, 10h39
  2. [PL/SQL] Optimisation requete SQL
    Par CDRIK dans le forum Langage SQL
    Réponses: 3
    Dernier message: 14/10/2004, 09h52
  3. Catproc.sql et Catalog.sql
    Par blids dans le forum Administration
    Réponses: 26
    Dernier message: 26/04/2004, 17h52
  4. Problème réplication SQL Server et SQL Server CE (RDA)
    Par didix11 dans le forum Réplications
    Réponses: 2
    Dernier message: 15/04/2004, 11h10
  5. de SQL vers T-SQL sous MS SREVER
    Par Nadaa dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 19/09/2003, 15h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo