Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/12/2010, 10h33   #1
Invité régulier
 
Inscription : janvier 2010
Messages : 11
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 11
Points : 9
Points : 9
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 :
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.
shark1308 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2010, 10h53   #2
Membre Expert
 
Inscription : avril 2006
Messages : 1 338
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2006
Messages : 1 338
Points : 1 315
Points : 1 315
Tu peux charger une table sql directement depuis un csv

http://dev.mysql.com/doc/refman/5.0/fr/load-data.html
__________________
Stay in Bed .. Save Energy
boo64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2010, 11h01   #3
Invité régulier
 
Inscription : janvier 2010
Messages : 11
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 11
Points : 9
Points : 9
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.
shark1308 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2010, 11h04   #4
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
c'est une erreur php ou une erreur systeme ?
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2010, 11h05   #5
Membre Expert
 
Inscription : avril 2006
Messages : 1 338
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2006
Messages : 1 338
Points : 1 315
Points : 1 315
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?
__________________
Stay in Bed .. Save Energy
boo64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2010, 11h45   #6
Invité régulier
 
Inscription : janvier 2010
Messages : 11
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 11
Points : 9
Points : 9
Citation:
Envoyé par sabotage Voir le message
c'est une erreur php ou une erreur systeme ?
Erreur Php qui prend trop de memoire.
shark1308 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2010, 11h49   #7
Membre Expert
 
Inscription : avril 2006
Messages : 1 338
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2006
Messages : 1 338
Points : 1 315
Points : 1 315
tu peux jouer avec le memory_limit de ton php.ini et utilisé memory_get_usage pr controlé la memoire utilisée par php
__________________
Stay in Bed .. Save Energy
boo64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2010, 11h51   #8
Invité régulier
 
Inscription : janvier 2010
Messages : 11
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 11
Points : 9
Points : 9
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.
shark1308 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2010, 11h56   #9
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
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.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h35.


 
 
 
 
Partenaires

Hébergement Web