|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : janvier 2011 Messages : 13 ![]() |
Bonjour,
Mon soucis est le suivant: Je dois remplir une table de ma base de données à l'aide d'un fichier au format texte. Seul problème, le fichier à une taille de 17 Go. J'utilise WAMP et phpMyAdmin. Au lieu de l'importer en une fois, j'ai décidé de le fragmenter et d'effectuer une boucle utilisant "load data infile" dans le répertoire contenant les fichiers dans C:\wamp\bin\mysql\data\ma_base_de_donnée. Pour l'instant, les fichiers ont une taille de 4Mo. La boucle commence et au bout de 80 secondes en général un message d'erreur apparait: "server has gone away". Seuls deux fichiers ont été importé. J'ai donc changé les paramètres du temps d'excution d'un script dans php.ini "max_execution_time = 600" et "max_input_time = 600" mais rien n'y fait. Est-ce que quelqu'un pourrait me mettre sur un voie SVP...? Merci d'avance. |
|
|
00
|
|
|
#2 | |||
![]() ![]() |
Citation:
Citation:
Citation:
Sinon de mémoire, il me semble que j'avais réussi à contourner le problème du max_execution_time en le mettant à zéro.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|||
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : janvier 2011 Messages : 13 ![]() |
Bonjour,
Non je n'ai pas encore fait 4250 fichiers, pour l'instant je teste... Sinon, j'ai efféctivement lancé le "load data infile" via la console MySQL et ça ne plante pas. Le plus gros fichier que j'ai pu chargé avec la console faisait 300 Mo. Je n'ose pas lancé le fichier de 17 Go en une fois par la console... Mais mon soucis s'est l'automatisation de l'import de plusieurs fichiers avec une boucle en php. J'ai testé avec "max_execution_time = 0". Même probleme : "MySQL server has gone away" et "maximum_execution_time exceeded"... |
|
|
00
|
|
|
#4 | |
![]() ![]() |
Un coup d'oeil à la doc de php dit ceci (j'ai mis en gras des parties qui peuvent t'intéresser) :
Citation:
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : janvier 2011 Messages : 13 ![]() |
Ce serait Apache qui poserait problème ?
J'avais déjà vu sur des forums ce "timeout", j'avais cherché dans httpd.conf dans apache pour la changer, mais impossible de trouver ce paramètre. Dans quel fichier pensez-vous qu'on puisse régler ce paramètre... si on peut le régler bien sûr |
|
|
00
|
|
|
#6 |
![]() ![]() |
Une piste chez Apache. C'est l'un des premiers paramètres de httpd.conf.
Il y a aussi un paramètre Timeout situé chez moi à la 359ème ligne, après les paramètres ServerAdmin et ServerName (ce dernier est commenté sur mon PC).
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : janvier 2011 Messages : 13 ![]() |
Merci pour votre aide...
J'ai fait une recherche automatique dans httpd.conf et TimeOut n'existe pas pas...j'ai donc ajouté à la fin du fichier "TimeOut 300". Mais cela ne change pas mon problème : La boucle fonctionne sur les deux premiers fichiers de 4 Mo et aux environs de 80 secondes...l'erreur apparait : "MySQL Server has gone away" et "maximum_execution_time exceeded (60 seconds)"... |
|
|
00
|
|
|
#8 |
![]() ![]() |
C'est Timeout et pas TimeOut !
Et Timeout 300 veut dire que tu coupes à 300 secondes, c'est à dire 5 minutes. Ce qui n'explique pas quand même ta coupure à 80 secondes ! N'étant pas un spécialiste de ces paramétrages, je ne peux t'aider davantage. Regarde du côté du forum Apache ou du forum php peut-être. Ceci dit, je me souviens avoir importé sans difficulté des fichiers d'environ 1Go avec LOAD_DATA_INFILE et c'était relativement rapide. C'est un import à faire sur ton PC ou sur un serveur en production ? Si c'est sur une machine hors production, lance le LOAD_DATA_INFILE du gros fichier de 17 Go ce soir en console MySQL et tu verras demain si c'est fini !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#9 |
|
Invité de passage
![]() Inscription : octobre 2008 Messages : 21 ![]() |
question peut être bête : si ce n'est pas une opération récurrente, pourquoi ne pas importer directement ton fichier depuis phpmyadmin ? si le fichier est trop volumineux, phpmyadmin le téléchargera en plusieurs fois... il faut copier au préalable ton fichier dans un répertoire de phpmyadmin, et ensuite choisir ce fichier depuis l'onglet "importer". Il devrait apparaître ici : "répertoire de transfert du serveur Web"...
bonne journée |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com