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 :

optimisation des performances du code PHP


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 56
    Points : 34
    Points
    34
    Par défaut optimisation des performances du code PHP
    Salut à tous !

    J'ai mon code qui me permet de charger ma BDD MySQL à partir d'un fichier texte.

    Mon fichier texte a 9999 lignes et le temps d'exécution du script est très élevé ( plus de 25 minutes).

    S'il vous plait aidez moi à optimiser ce script ou montrer une autre méthode pour la même tâche et avec un temps d'exécution réduit.

    Voici mon code:

    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
     
    <?php
     
    set_time_limit(0);
    error_reporting(E_ALL ^ E_NOTICE);
     
    mysql_connect('localhost','root','');
    mysql_select_db('gestnum');
     
    //on vide la table coordab avant
    mysql_query("TRUNCATE TABLE coordab");
     
    //On ouvre le fichier en question (en lecture seule)
    $handle = fopen("fichab.txt", "r");
     
    //on parcours tout le fichier (en faisant croire qu'il s'agit d'un csv pour faciliter le traitement)
    while ($data = fgetcsv($handle, 10000, " ")) {
     
    mysql_query("INSERT INTO coordab (IMSI, MEID, ESN1, PUK1, AKY, MDN) 
     	           VALUES ('".$data[0]."','".$data[1]."','".$data[2]."','".$data[3]."','".$data[4]."','".$data[5]."')");
    }
    //On ferme le fichier
    fclose($handle);
     
    header('Location: alimenter-la-bd.php?info=charger');
    ?>
    Merci d'avance !

  2. #2
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 275
    Points
    3 275
    Par défaut
    Il me semble te l'avoir déjà mis quelque part :

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    <?php
     
    set_time_limit(0);
    error_reporting(E_ALL ^ E_NOTICE);
     
    mysql_connect('localhost','root','');
    mysql_select_db('gestnum');
     
    //on vide la table coordab avant
    mysql_query("TRUNCATE TABLE coordab");
     
    //On ouvre le fichier en question (en lecture seule)
    $handle = fopen("fichab.txt", "r");
     
    //on parcours tout le fichier (en faisant croire qu'il s'agit d'un csv pour faciliter le traitement)
    $i = 0;
            $queryBase = 'INSERT INTO coordab (IMSI, MEID, ESN1, PUK1, AKY, MDN) VALUES ';
            $query = $queryBase;
            while (($data = fgetcsv($handle, 0, " ")) !== FALSE) 
            {
     
                $query .= "('$data[0]', '$data[1]', '$data[2]', '$data[3]', '$data[4]', '$data[5]'),";
                if ($i % 5000 == 0) 
                {
                    // On enlève la dernière virgule
                    $query = substr($query, 0, -1);
                    mysql_query($query);
                    $query = $queryBase;
                }
                $i++;
            }
            // Pour les derniers enregistrements
            if ($query != $queryBase) {
                   $query = substr($query, 0, -1);
                   mysql_query($query);
            }
     
     
     
    ?>

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 56
    Points : 34
    Points
    34
    Par défaut
    Vraiment je suis reconnaissant pour ce travail que vous avez fait pour moi.
    Grâce à votre code, mon temps d'exécution a été réduit considérablement.
    Et mon application gagne énormément en performance.
    Le temps d'exécution actuel est moins 1 minute.
    Merci encore; car vous m'avez déjà beaucoup aidé !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 13
    Dernier message: 18/07/2011, 18h24
  2. Transformer des données en code PHP
    Par eric41 dans le forum Langage
    Réponses: 2
    Dernier message: 18/09/2008, 23h35
  3. [MySQL] Optimisation des performances ?
    Par Sayrus dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 21/08/2007, 13h57
  4. Optimisation des performances sur station SUN
    Par TiChabin972 dans le forum Général Java
    Réponses: 1
    Dernier message: 20/07/2007, 18h26
  5. Optimisation des performances
    Par GLSpirit dans le forum C++
    Réponses: 14
    Dernier message: 12/05/2007, 15h18

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