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

Langage PHP Discussion :

Un cron sur reqûetes SQL toutes les 5 minutes = surchage ?


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 61
    Points : 33
    Points
    33
    Par défaut Un cron sur reqûetes SQL toutes les 5 minutes = surchage ?
    Bonjour à tous,

    Pour mon projet libre ApocalySpace j'ai besoin de mettre à jour régulièrement la base de données.

    En gros il faudrait que je fasse un cron qui vérifie si des constructions sont terminées, si un joueur attaque un autre joueur ...etc.
    Pour cela pas d'autre moyen que de faire un gros SELECT dans ma bdd et de cherche si quelque chose se passe.

    Du coup voilà ma question: pour plus de rapidité, je pensais faire un cron toutes les minutes mais je me suis dit que ça aller surcharger pour rien, donc j'ai passé ce cron à 5 minutes.
    La question est donc : est-ce que ça ne va pas surcharger mon serveur SQL ? (je sais pas si ça peut aider mais je fais mes requêtes via PDO).

    Sachant que derrière j'ai un serveur dédiée qui tourne très bien.

    Merci,
    Julien.

  2. #2
    Inactif  
    Inscrit en
    Septembre 2011
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Septembre 2011
    Messages : 100
    Points : 122
    Points
    122
    Par défaut
    Je ne pense pas qu'il y ait réellement de risque de surcharger (après tout, les utilisateurs eux feront des requêtes plusieurs fois par seconde s'ils sont nombreux), il faudra par contre penser à bien structurer les actions, par exemple en créant une table avec toutes les actions en attente d'exécution afin que ton programme n'ait pas à parcourir des données superflues.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 61
    Points : 33
    Points
    33
    Par défaut
    Oui bien sûr, j'ai une table qui gère tous les temps de construction, ainsi je n'ai qu'a vérifier si "endTime" < time() et si c'est faut alors je lance le script de combat + retour de flottes.

    En sois c'est simple, mais imagine 100 joueurs (on est actuellement à 90 joueurs en moins de 10 jours !) qui balance 2 flottes chacun, ok je fais un cron toute les 5 minutes mais si dans ces 5 minutes j'ai 50 attaques qui attendent d'être exécuté, mon serveur va t'il le supporter ?

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Citation Envoyé par te8teur Voir le message
    (je sais pas si ça peut aider mais je fais mes requêtes via PDO).

    .
    Si tu fais des cron's, je ne vois pas l’intérêt de passer par des scripts PHP.

    Ecris plutôt tes requêtes en dur dans des fichiers SQL, et passe les directement à la ligne de commande MySQL, tu pourras ainsi monter en charge sans surcharger ton serveur PHP.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 61
    Points : 33
    Points
    33
    Par défaut
    Bah je suis obligé de passer par php puisque je dois lancer mon script de combat si un combat a lieu ...

  6. #6
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Y'a un truc qui me chiffonne...

    En gros il faudrait que je fasse un cron qui vérifie si des constructions sont terminées, si un joueur attaque un autre joueur
    Ce que tu décris là ce sont des évènements, non des tâches répétitives à effectuer.
    L'usage classique d'un cronjob c'est la rotation des logs, le nettoyage des tables de backup ou ce genre de chose. Quand il s'agit de gérer des évènements c'est une autre histoire et un daemon est bien plus adapté.

    Si ça t'inspire voici quelques ressources sur la création de daemons en PHP, je pense que tu trouvera comme moi que cette solution est beaucoup plus adaptée à ton besoin que l'usage des cronjobs:


    Attention Les daemons PHP nécéssitent PHP 5.3 minimum et l'extension PCNTL dans tous les cas. PHP 5.3 c'est pour avoir le garbage collector (sinon la mémoire n'arrête jamais de se remplir) et PCNTL c'est pour avoir le support POSIX (forks, signaux etc.)

    Par ailleurs si tu veux mon avis, PHP pour les jeux textuels en ligne (à la mode Ogame) c'est dépassé. Si j'avais dû me lancer dans un projet comme celui-ci j'aurais certainement choisi des technologies full JavaScript pour les énormes performances et la flexibilité que celles-ci proposent. Par exemple MongoDB + NodeJS + HTML5 + DOM Javascript + jQuery.
    Il existe également des frameworks dédiés à ce genre de besoins comme haxe par exemple avec lequel sont fait les jeux de Motion Twin.
    Bref, je ne dis pas que ce sont les technologies que tu dois impérativement utiliser, savoir que ça existe et pourquoi pas s'en inspirer serait une bonne chose.

    Bon courage pour ton projet

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 61
    Points : 33
    Points
    33
    Par défaut
    Ok merci je vais jeter un coup d'oeil à leur source.

  8. #8
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2010
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 144
    Points : 241
    Points
    241
    Par défaut
    Si les opérations à effectuer sont uniquement dans la base MySQL peut être que les triggers peuvent convenir à ton besoin. Un peu plus complexe à mettre en place mais plus performant.

    http://dev.mysql.com/doc/refman/5.0/fr/triggers.html

  9. #9
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Citation Envoyé par gmarsay Voir le message
    Si les opérations à effectuer sont uniquement dans la base MySQL peut être que les triggers peuvent convenir à ton besoin. Un peu plus complexe à mettre en place mais plus performant.

    http://dev.mysql.com/doc/refman/5.0/fr/triggers.html
    Je suis contre cette approche car, dans le cas présent, elle consisterait à déporter une partie la logique applicative sur le modèle et donc introduirait de la confusion et surtout du couplage.

    Je suis de ceux qui prônent une séparation claire des rôles dans une architecture

Discussions similaires

  1. [XL-2010] Debuts sur VBA, remplacer toutes les cellules >0 par 1 sur Excel 2010
    Par labjo14 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 11/04/2014, 17h35
  2. [Débutant] Comment on peut voir sur l'onglet toutes les procedures et fonctions
    Par xingjing910 dans le forum VB.NET
    Réponses: 3
    Dernier message: 04/04/2012, 11h49
  3. [VxiR2] Visualiser sur un axe toutes les données
    Par JuniorBI dans le forum Deski
    Réponses: 8
    Dernier message: 21/10/2011, 11h51
  4. Réponses: 1
    Dernier message: 28/07/2006, 04h57
  5. Comment faire un clear sur un beufferedImage toutes les x secondes!
    Par jlassiramzy dans le forum EDT/SwingWorker
    Réponses: 10
    Dernier message: 26/07/2006, 14h18

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