Bonjour,
je ne suis pas sûr d'être au bon endroit, car je ne sais pas si PHP est bien adapté a ce que je veux faire.
Le principe est simple, insérer le contenu d'un fichier CSV dans une base de donnée. Mon script fonctionne très bien pour des fichiers inférieur à 1Mo. mais le problème et que je dois traiter un fichier de 100Mo.
J'ai poussé la limite de temps de PHP à 1h, mais au bout de ce temps, je n'ai parcouru que 6% de mon fichier.
Ma question est donc : comment optimser tout ca ? est-ce qu'il faut que j'utilise un autre langage.. si oui, lequel ?
Voici mon code:
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
21
22
23
24
25 $sSqlInsert=""; $sNomTable="matable"; //vide la table $sSql="DELETE FROM ".$sNomTable.""; mysql_query($sSql); $fpHandle = fopen($sNomFichier, "r"); while (($aData = fgetcsv($fpHandle, 1000, ";")) !== false) { $nNbVal = count($aData); if($aData[($nNbVal-1)]==""){ array_pop($aData); $nNbVal = count($aData); } //insertion d'une nouvelle ligne $sSqlInsert.="INSERT into ".$sNomTable." VALUES('','".date("Y-m-d H:i:s")."','".date("Y-m-d H:i:s")."'"; for ($i=0; $i < $nNbVal; $i++) { $sSqlInsert.= ",'".addslashes($aData[$i])."'"; } $sSqlInsert.=");"; } mysql_query($sSqlInsert); fclose($fpHandle);
Partager