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 :

Analyser gros fichier XML, enregistrement dans une table MySQL


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 9
    Par défaut Analyser gros fichier XML, enregistrement dans une table MySQL
    Bonjour,

    Je dois parser un gros fichier xml (500 mo) afin d'extraire les données et de les enregistrer dans une table mysql (+ de 300 000 enregistrement).

    Pour parser j'utilise XMLReader.

    Le problème est que mon script s’arrête avant la fin.

    Après plusieurs test, le script effectue à chaque fois environ 21 000 insert puis s’arrête ce qui correspond à 20 min d’exécution.

    Le script ne s’arrête jamais au même endroit et ses deux premières lignes sont :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    set_time_limit(0);
    ignore_user_abort(true);

    Auriez-vous des pistes à me proposer ?

    Merci.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 101
    Par défaut
    Salut,

    Il est possible qu'à chaque itération tu utilises un peu plus de mémoire, vérifies que tu unset bien tes ressources ou que ton appli n'as pas un usage mémoire proportionnel à la taille du fichier.

    Les fonctions utiles sont je crois et
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    get_memory_peak_usage

    Tu peux aussi ajuster la variable de conf memory_limit pour t'aider.

  3. #3
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    c'est pour ce genre de requete, mais tu lis un fichier distant ?

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 9
    Par défaut
    Non ce n'est pas un fichier distant c'est un fichier xml contenu dans une archive que je décompresse avant de le lire.

    je viens d'effectuer un test et mon script s'est arrêté au même moment ou le serveur utilisé toutes ses ressources en RAM.

    Existe-t-il un moyen de gérer la RAM utilisée par le serveur ?

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par bunsky Voir le message
    Non ce n'est pas un fichier distant c'est un fichier xml contenu dans une archive que je décompresse avant de le lire.

    je viens d'effectuer un test et mon script s'est arrêté au même moment ou le serveur utilisé toutes ses ressources en RAM.

    Existe-t-il un moyen de gérer la RAM utilisée par le serveur ?
    tu le décompresse direct en PHP ? si oui tu peux lire en stream dans un fichier compresser

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 9
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    tu le décompresse direct en PHP ? si oui tu peux lire en stream dans un fichier compresser
    Oui je décompresse en PHP.

    Faire :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $xmlReader->open('fichier_xml.gz');
    aura le même résultat que
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
     $xmlReader->open('fichier_xml.xml');
    ?

Discussions similaires

  1. Réponses: 4
    Dernier message: 02/07/2012, 09h17
  2. [MySQL] Fichier XML qui remplit une table MySQL + pb d'accent
    Par sheira dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 17/09/2010, 10h01
  3. Ajout de lignes dans un tablea HTML : enregistrement dans une table Mysql
    Par jean-pierre96 dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 23/04/2007, 18h44
  4. Réponses: 1
    Dernier message: 27/02/2007, 23h08
  5. Nombre d'enregistrement dans une table MySQL
    Par tom06440 dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 21/10/2005, 19h07

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