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 :

Crash mémoire après générations de fichiers csv


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai Avatar de shark1308
    Homme Profil pro
    Architecte technique
    Inscrit en
    Janvier 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13
    Points : 24
    Points
    24
    Par défaut Crash mémoire après générations de fichiers csv
    Salut à tous,

    Je vais essayer d'être le plus précis possible ;

    je bosse sur un outil de génération de données Php pour mettre en charge une base mysql.

    Pour gagner en perf , je fais un import de mes données générées dans des fichiers csv, mais lors de l'import de 20 000 000 de lignes mon systeme crash et me renvoi une erreur de ram saturée.

    voici un aperçu de mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    echo "Début remplissage : " . $nomTable . "<br />\n";
                ob_flush();
                $fp = fopen('csv/' . $order . Gendata_Casse::toCamelCase($nomTable) . 'Data.csv', 'w');
                for ($i = 1; $i <= $volume; $i++) {
                    if (!assert(fputcsv($fp, call_user_func(array($this, 'populate' . Gendata_Casse::toCamelCase($nomTable)), $i), ';', '"'))) {
                        fputcsv($fp, call_user_func(array($this, 'genDependent' . Gendata_Casse::toCamelCase($nomTable))), ';', '"');
                    }
                }
                fclose($fp);
    ....
    Est ce qu'il existe une solution pour ne plus avoir ce genre de problème.

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    Tu peux charger une table sql directement depuis un csv

    http://dev.mysql.com/doc/refman/5.0/fr/load-data.html

  3. #3
    Membre à l'essai Avatar de shark1308
    Homme Profil pro
    Architecte technique
    Inscrit en
    Janvier 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par boo64 Voir le message
    Tu peux charger une table sql directement depuis un csv

    http://dev.mysql.com/doc/refman/5.0/fr/load-data.html
    Merci de ta rapidité,
    en fait c'est ce que je fait, mais pour des soucis de rapidités, je génère d'abord mes fichiers CSV et les importes après , c'est lors de la création du CSV, quand j'importe de gros volumes, qu'il crash.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    c'est une erreur php ou une erreur systeme ?

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    Citation Envoyé par shark1308 Voir le message
    Merci de ta rapidité,
    en fait c'est ce que je fait, mais pour des soucis de rapidités, je génère d'abord mes fichiers CSV et les importes après , c'est lors de la création du CSV, quand j'importe de gros volumes, qu'il crash.
    ok j'imagine que tu n'as pas possibilités de générer directement c'est csv depuis sql?

  6. #6
    Membre à l'essai Avatar de shark1308
    Homme Profil pro
    Architecte technique
    Inscrit en
    Janvier 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par sabotage Voir le message
    c'est une erreur php ou une erreur systeme ?
    Erreur Php qui prend trop de memoire.

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    tu peux jouer avec le memory_limit de ton php.ini et utilisé memory_get_usage pr controlé la memoire utilisée par php

  8. #8
    Membre à l'essai Avatar de shark1308
    Homme Profil pro
    Architecte technique
    Inscrit en
    Janvier 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par boo64 Voir le message
    tu peux jouer avec le memory_limit de ton php.ini et utilisé memory_get_usage pr controlé la memoire utilisée par php
    ok je test, merci.

  9. #9
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Je ne pense pas que PHP puisse gérer un gros fichier sans avoir la mémoire correspondante en reserve.

    A voir si on fermant et ré ouvrant le fichier a la moitié du traitement ca marche.

Discussions similaires

  1. Réponses: 1
    Dernier message: 11/09/2009, 11h55
  2. [Excel] Bug I.Explorer après génération de fichiers excel
    Par wtoueress dans le forum Bibliothèques et frameworks
    Réponses: 20
    Dernier message: 30/06/2008, 13h40
  3. Génération de fichiers csv en coréen
    Par titecaro dans le forum ODI (ex-Sunopsis)
    Réponses: 2
    Dernier message: 02/10/2007, 21h31
  4. [CSV] Protection génération de fichier CSV
    Par Fooshi dans le forum Langage
    Réponses: 4
    Dernier message: 20/12/2005, 13h55
  5. [Sunopsis] Génération de fichier .csv
    Par aurelbcn dans le forum ODI (ex-Sunopsis)
    Réponses: 2
    Dernier message: 12/12/2005, 18h21

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