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 :

Optimisation d'import entre deux BDD MySQL


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 33
    Points : 12
    Points
    12
    Par défaut Optimisation d'import entre deux BDD MySQL
    Bonjour,

    J'ai un script PHP qui se connecte sur deux BDD MySQL pour faire un import.
    Je trouve que le script es très long à s'exécuter et j'aimerai bien optimiser cela.

    En gros j'ai un 1er foreach où je parcourt mes sites (des centaines), ceux-ci ont dans ma 1ere BDD MySQL.

    Pour chaque site je récupère les données dans une 2éme BDD.

    Je regarde le nombre de ligne pour le site en question, si > 1 je fait une 2éme boucle foreach et pour chaque ligne j'insère les champs dans ma BDD.



    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
    foreach ($_LISTE_DES_SITES as $site) {
    
     Requête 1 : récupération des données pour chaque "site" sur la 2éme BDD MySQL.
    
        $nombre_ligne_temps = sizeof($_data_1);
    
        foreach ($_data_1 as $temps) {
    
            $nombre_ligne_temps--;
    
    
            Requête 2 : vérification de la présence de ces données dans la 1er BDD
    
            if (sizeof($test) < 1) {
                Requête 3 : insertion des données de la 2éme BDD dans la 1ére BDD si les données n'existent pas
                mysqli_query($con, $q);
            } else {
               Requête 3 bis : update si les donnée existent
        }
    }

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Lors de problèmes de performances, il faut identifier quelle partie du script prend le plus de temps.

    Une piste d'optimisation est de travailler avec un curseur : a priori, actuellement, tu lis toutes les lignes de la 1ere requête et tu boucles ensuite sur le tableau obtenu. A la place, tu pourrais boucler directement sur le résultat de la requête : tu lis une ligne, tu la traites. Evidemment, ça implique d'avoir les deux connexions à tes deux bases ouvertes en même temps (mais normalement, ça ne pose pas de problème)
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

Discussions similaires

  1. Synchronisation partielle de deux BDD mysql
    Par sheepk dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 15/06/2007, 10h16
  2. jointure entre deux tables mysql
    Par Invité dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 23/04/2006, 20h08
  3. Transfert de tables entre deux bases MySQL
    Par baaron dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 31/01/2006, 23h24
  4. Perte de temps entre Deux bases MySQL
    Par ramm50 dans le forum Outils
    Réponses: 7
    Dernier message: 08/09/2005, 09h33
  5. [ADO.Net][VB.NET] Comment copier des données entre deux BDD différentes ?
    Par maddog2032 dans le forum Accès aux données
    Réponses: 6
    Dernier message: 06/06/2005, 11h01

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