le 19/08/2009 à 10:32
limace2000
Bonjour
Je suis nouveau sur ce forum et j'éspére que vous allez pouvoir m'aider !!!!
J'utilise en local un script de lecture d'un fichier texte pour l'incorporer dans une base mysql.
Je lis donc mon fichier texte en cherchant les noms de colonnes et les données (séparé par des :) et je recherche également les "@" qui séparents mes nouvelles lignes dans mon tableau. C'est clair ?
Voici un extrait de mon fichier (qui fait 40 000 lignes):
$FILE:
DAC_Clic_Phase1: 0
$FILE:
OriginalModTime: 03/10/2006 09:47:44
DAC_UNID: 6AF1EDDAF236F98BC1257102005982D5
DAC_Sce: 172
DAC_Quant: 2
DAC_Serie: Unitaire
DAC_Code_Site: F04
$Revisions: 26/01/2006 17:28:01,26/01/2006
@
$FILE:
DAC_Clic_Phase1: 0
$FILE:
OriginalModTime: 05/03/2009 16:46:44
DAC_UNID: 046674D672CE4EB5C12571020047B2A5
PH1_Visibilite: Non
$Revisions: 26/01/2006 14:07:06,26/01/2006 14:07:07,26/01/2006
voir data
@
$FILE:
DAC_Clic_Phase1: 0
OriginalModTime: 27/11/2006 18:14:49
DAC_UNID: 39DB170F75E269CFC125710100511222
DAC_Sce: 015
Et voici mon code PHP:
Ma probléme et que ce script marche rapidement au début mais peu a peu ca ralentie enormémént !!!!
D'où viens ce ralentissement ???
Je suis nouveau sur ce forum et j'éspére que vous allez pouvoir m'aider !!!!
J'utilise en local un script de lecture d'un fichier texte pour l'incorporer dans une base mysql.
Je lis donc mon fichier texte en cherchant les noms de colonnes et les données (séparé par des :) et je recherche également les "@" qui séparents mes nouvelles lignes dans mon tableau. C'est clair ?
Voici un extrait de mon fichier (qui fait 40 000 lignes):
$FILE:
DAC_Clic_Phase1: 0
$FILE:
OriginalModTime: 03/10/2006 09:47:44
DAC_UNID: 6AF1EDDAF236F98BC1257102005982D5
DAC_Sce: 172
DAC_Quant: 2
DAC_Serie: Unitaire
DAC_Code_Site: F04
$Revisions: 26/01/2006 17:28:01,26/01/2006
@
$FILE:
DAC_Clic_Phase1: 0
$FILE:
OriginalModTime: 05/03/2009 16:46:44
DAC_UNID: 046674D672CE4EB5C12571020047B2A5
PH1_Visibilite: Non
$Revisions: 26/01/2006 14:07:06,26/01/2006 14:07:07,26/01/2006
voir data
@
$FILE:
DAC_Clic_Phase1: 0
OriginalModTime: 27/11/2006 18:14:49
DAC_UNID: 39DB170F75E269CFC125710100511222
DAC_Sce: 015
Et voici mon code PHP:
<?php
set_time_limit (60000000000000);
$handle = fopen('file.txt', 'r');
if ($handle) {
$link = mysql_connect('localhost', '***', '***') or die('Impossible de se connecter : ' . mysql_error());
mysql_select_db('***') or die('Impossible de sélectionner la base de données');
mysql_query("LOCK TABLES *** WRITE");
$id=1;
//insertion du 1er enregistrement
$sql = "INSERT INTO `***` (`id`) VALUES ('$id')";
$requete = mysql_query ($sql);
while (!feof($handle)) {
$buffer = fgets($handle, 4096);
if (substr($buffer,0,1) =="@"){
// Si c'est une nouvelle ligne
$drapeau=0;
$id++;
$sql = "INSERT INTO `***` (`id`) VALUES ('$id')";
$requete = mysql_query ($sql);
}
else
{
//extraction des données
$entete = trim(substr($buffer,0,strpos($buffer, ":")));
$corps = trim(substr($buffer,strpos($buffer, ":")+1));
if ($entete == "$Revisions")$drapeau=1;
if ($drapeau == 1){
$entete="$Revisions";
$corps=$buffer;
}
// Traitement des lignes sans intitulé de colonnes
if ($entete==''){
$entete=$entete_old;
$corps=$corps_old.$corps;
}
$entete_old=$entete;
$corps_old=$corps;
if ($corps<>"" or $corps<>" " ){
// Connexion au serveur mysql
$sql = "UPDATE `***` SET $entete='$corps' where id=$id";
$requete = mysql_query ($sql);
if (!$requete) {
// Si l'insertion n'a pas marché ca veux dire que la colonne n'existe pas. On la cré et on relance la requete
$sql = "ALTER TABLE `***` ADD `$entete` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL";
$requete = mysql_query ($sql);
$sql = "UPDATE *** SET `$entete`='$corps' where id=$id";
$requete = mysql_query ($sql);
}
}
}
mysql_query("UNLOCK TABLES");
}
fclose($handle);
}
?>
Ma probléme et que ce script marche rapidement au début mais peu a peu ca ralentie enormémént !!!!
D'où viens ce ralentissement ???