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);