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 :

Augmenter la rapiditié de l'insertion


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 148
    Par défaut Augmenter la rapiditié de l'insertion
    Bonjour à tous,

    J'ai actuellement ce code qui me permet de faire les historiques de joueurs de mon site... sauf qu'il prend beaucoup de temps

    Code : 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    set_time_limit(0);
     
    $liste_serveur = array();
    $sql = mysql_query("SELECT place, numero, name FROM infos ORDER BY place ASC");
    while ($data = mysql_fetch_object($sql))
    $liste_serveur[] = $data->name;
     
    if ($_GET["type"] == "alliances") {
     
    foreach ($liste_serveur AS $nom_mondes) {
     
    mysql_query('INSERT INTO '.$nom_mondes.'_player_history (player_id,alliance_id,rank,date,points,villes,player_kills_all,player_kills_att,player_kills_def,rank_pka,rank_pkat,rank_pkd) 
    SELECT
    p.id,
    p.alliance_id,
    p.rank,
    NOW(),
    p.points,
    p.towns,
    pkay.points,
    pkaw.points,
    pkaz.points,
    pkay.rank,
    pkaw.rank,
    pkaz.rank
    FROM '.$nom_mondes.'_players p
    JOIN '.$nom_mondes.'_player_kills_all pkay ON (p.id=pkay.player_id)
    JOIN '.$nom_mondes.'_player_kills_att pkaw ON (p.id=pkaw.player_id)
    JOIN '.$nom_mondes.'_player_kills_def pkaz ON (p.id=pkaz.player_id)') or die ('Erreur : '.mysql_error() );
     
    mysql_query('DELETE FROM '.$nom_mondes.'_player_history WHERE `date` < CURRENT_DATE - INTERVAL 62 DAY') or die (mysql_error());
    }
    La table infos contient les 40 mondes de jeu

    Ne me parlez-pas de la construction des tables ^^ c'est fait comme ça à cause de la fonction LOAD DATA INFILE qui charge mes données.

    Est-il possible d'augmenter la rapidité du code ? Ou alors, est-il plus rapide de le faire a partir des fichiers .txt qui sont chargés chaque heure ? Merci d'avance

  2. #2
    Membre Expert
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Par défaut
    Est ce qu'il y a des index, clé primaire sur tes tables ?

  3. #3
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Par défaut
    a première vue :
    essaye d'utilisé PDO ,
    des requêtes préparées,
    ensuite tes requêtes ne sont pas optimisées,
    comment ta su que l'insertion te pose problème de lenteur !!!!!
    je crois que ton script est a revoir en matière d'organisation d'opération.

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 148
    Par défaut
    Merci pour vos réponses :

    J'ai une clé UNIQUE sur deux champs sur toutes les tables de ce code

    t'as des bons docs sur :

    essaye d'utilisé PDO ,
    des requêtes préparées, ?

    ensuite tes requêtes ne sont pas optimisées,
    comment ta su que l'insertion te pose problème de lenteur !!!!!
    Bah quand ça dure 2h30 ^^ (y a un peu près 15 000 players par monde de jeu)

    je crois que ton script est a revoir en matière d'organisation d'opération.
    Voilà ce que je demande, comment faire ^^

    Merci d'avance

Discussions similaires

  1. Comment faire des inserts massivement et rapidement ?
    Par JYves dans le forum Langage SQL
    Réponses: 6
    Dernier message: 09/08/2006, 10h57
  2. Comment faire des inserts massivement et rapidement ?
    Par JYves dans le forum Décisions SGBD
    Réponses: 5
    Dernier message: 09/08/2006, 10h57
  3. insertions plus rapides
    Par sillycoder dans le forum SQL
    Réponses: 5
    Dernier message: 30/12/2005, 22h45
  4. Réponses: 12
    Dernier message: 21/10/2005, 14h35
  5. Insertion dans fichier texte + rapide que TStringList ?
    Par benj63 dans le forum C++Builder
    Réponses: 8
    Dernier message: 26/02/2004, 11h34

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