IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

problème de remplissage de table (delay ?) [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 35
    Points : 28
    Points
    28
    Par défaut problème de remplissage de table (delay ?)
    Bonjour,

    J'espère ne pas créer un sujet existant mais je n'ai rien trouvé qui correspond.

    Mon probléme est que j'essaye de charger un table à partir de données d'un fichier csv que je trie et que je rentre ligne par ligne. au bout d'un certain temps la page php affiche terminé dans la barre d'état alors que toutes les données ne sont pas chargées.
    J'ai effectué plusieurs fois la même opération (suppression, création et chargement de la table) et je n'obtiens pas le même nombre de lignes chargées dans la table.

    Quel est mon problème ? Je pense que ça doit venir d'un delay d'exécution que je dépasse mais je ne sais pas où chercher si c'est au niveau de la base ou du navigateur.

    J'avais environ 600 lignes qui étaient insérées en moyenne donc j'ai fermé et réouvert la base toutes les 300 lignes mais je n'arrive qu'a inséré quelque centaines de lignes en plus, en sachant que je doit en inséré environ 50 000.

    En espérant avoir été assez clair, merci.

  2. #2
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    Salam , j'avais un problème de ce genre mais avec un message d'erreur que j'ai résolu ( problème de caractère spéciaux...) et une fois c’était une ligne vide entre les enregistrements.
    avec un code joint a ton poste serai appréciable , essaye de faire un contrôle avec message d'erreur pour voir.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 35
    Points : 28
    Points
    28
    Par défaut
    Voici mon code j'ai supprimer les traitement de donnees pour une meilleure lecture.

    Par contre je fait des affichages d'erreur pour les requetes mais je ne sais pas si c'est les bon pour ce genre de problème. Dans mon exécution, je n'ai pas d'erreur qui s'affichent, juste le navigateur qui arrète de charger uet le status "Terminé" dans la barre d'état.

    En espérant donner assez d'info, merci.

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
     
     
    <html>
    <body>
     
    <?
     
    /*Informations d'acces a la base de donnees*/
    $hote="localhost";
    $base="base";
    $utilisateur="oimy";
    $pass="pass";
     
    /*Connection a la base de donnees*/
    $sql_objet=mysql_connect($hote,$utilisateur,$pass) or die('Echec de la connexion à la base de donnée');
    mysql_select_db("$base") or die('Connexion à la base de donnée réussie mais table manquante ou endommagée');
     
    /*Requetes de creation des donnees de la base*/
    $requete = "CREATE TABLE IF NOT EXISTS `table_bib_test_ol` (
    	`indice` int(11) NOT NULL AUTO_INCREMENT,
    	`component_reference` varchar(50) NOT NULL,
    	`manufacturer` varchar(50) NOT NULL,
    	`function` varchar(50) NOT NULL,
    	`package` varchar(50) NOT NULL,
    	`generic` varchar(50) NOT NULL,
    	`advanced_package` varchar(50) NOT NULL,
    	`value` varchar(50) NOT NULL,
    	`tolerence` varchar(50) NOT NULL,
    	`nb_pins` varchar(50) NOT NULL,
    	`pitch` varchar(50) NOT NULL,
    	`voltage` varchar(50) NOT NULL,
    	`current` varchar(50) NOT NULL,
    	`wattage` varchar(50) NOT NULL,
    	`frequency` varchar(50) NOT NULL,
    	`size_x` varchar(50) NOT NULL,
    	`size_y` varchar(50) NOT NULL,
    	`height` varchar(50) NOT NULL,
    	`description` varchar(500) NOT NULL,
    	`datasheet` varchar(250) NOT NULL,
    	`schema` varchar(250) NOT NULL,
    	`ibis` varchar(50) NOT NULL,
    	`spyce` varchar(50) NOT NULL,
    	`d3` varchar(50) NOT NULL,
    	`pcb` varchar(50) NOT NULL,
    	`thermique` varchar(50) NOT NULL,
    	PRIMARY KEY (`indice`)
    	);\n";
     
    /*Envoi de la requete*/
    $resultat = mysql_query($requete) or die ('Erreur '.$requete.' '.mysql_error());
     
     
    $cpt=1;
     
    /*Ouverture du fichier*/
    $fp=fopen("fichier.csv","r");
     
    $cpt_tmp=0;
    /*Lecture du fichier*/
    while (!feof($fp))
    	{
    	$ligne = fgets($fp,4096);
    	// on crée un tableau des élements séparés par des points virgule
    	$liste = explode(";",$ligne);
    	$liste[0] = ( isset($liste[0]) ) ? $liste[0] : Null;
    	$liste[1] = ( isset($liste[1]) ) ? $liste[1] : Null;
    	$liste[2] = ( isset($liste[2]) ) ? $liste[2] : Null;
    	$liste[5] = ( isset($liste[5]) ) ? $liste[5] : Null;
    	$liste[7] = ( isset($liste[7]) ) ? $liste[7] : Null;
    	$liste[8] = ( isset($liste[8]) ) ? $liste[8] : Null;
    	$liste[9] = ( isset($liste[9]) ) ? $liste[9] : Null;
    	$liste[10] = ( isset($liste[10]) ) ? $liste[10] : Null;
    	$liste[11] = ( isset($liste[11]) ) ? $liste[11] : Null;
    	$liste[12] = ( isset($liste[12]) ) ? $liste[12] : Null;
    	$liste[13] = ( isset($liste[13]) ) ? $liste[13] : Null;
    	$liste[14] = ( isset($liste[14]) ) ? $liste[14] : Null;
    	$liste[15] = ( isset($liste[15]) ) ? $liste[15] : Null;
    	$liste[16] = ( isset($liste[16]) ) ? $liste[16] : Null;
    	$liste[51] = ( isset($liste[51]) ) ? $liste[51] : Null;//status web
     
     
    	$champs0=$liste[7];//component_reference
    	$champs1=$liste[8];//manufacturer
     
     
                     //Traitement des donnees
     
    	$champs24="-";//thermique
     
    	$verif=$liste[0];
     
     
    	// pour eviter qu un champs "nom" du fichier soit vide
    	$verif=$liste[0];
    	if($temp!='CAO' && $liste[51]=='DEV_IN' && $verif!='' && $verif!='OKT_ANA00_BGA_000' && $verif!='PART_NO' && $verif[0]!='#')
    		{
    		$cpt++;
    		$requete="INSERT INTO table_bib_test_ol(`indice`,`component_reference`,`manufacturer`,`function`,`package`,`generic`,`advanced_package`,`value`,`tolerence`,`nb_pins`,`pitch`,`voltage`,`current`,`wattage`,`frequency`,`size_x`,`size_y`,`height`,`description`,`datasheet`,`schema`,`ibis`,`spyce`,`d3`,`pcb`,`thermique`) VALUES('','$champs0','$champs1','$champs2','$champs3','$champs4','$champs5','$champs6','$champs7','$champs8','$champs9','$champs10','$champs11','$champs12','$champs13','$champs14','$champs15','$champs16','$champs17','$champs18','$champs19','$champs20','$champs21','$champs22','$champs23','$champs24');\n";		mysql_query($requete) or die ('Erreur '.$requete.' '.mysql_error());
    		$cpt_tmp++;
    		}
     
     
    	if($cpt_tmp>300)
    		{
    		//Fermeture de la base de donnees
    		mysql_close($sql_objet);
    		/*Connection a la base de donnees*/
    		$sql_objet=mysql_connect($hote,$utilisateur,$pass) or die('Echec de la connexion à la base de donnée');
    		mysql_select_db("$base") or die('Connexion à la base de donnée réussie mais table manquante ou endommagée');
    		$cpt_tmp=0;
    		echo "$cpt ,";
    		}
     
    	}
     
    // fermeture du fichier
    fclose($fp);
     
    //Fermeture de la base de donnees
    mysql_close($sql_objet);
     
    echo "<br> OK pour $cpt lignes"
     
    ?>
     
    </body>
    </html>

  4. #4
    Membre confirmé Avatar de humitake
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2010
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2010
    Messages : 399
    Points : 578
    Points
    578
    Par défaut
    Bonjour,

    Ajoute cette ligne au début de ton code php :
    Je t'invite égallement à lire la documentation de cette fonction ici.

  5. #5
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    si tu as pas de warning ou d'erreur ça peut venir d'un dépassement de temps qui n'affiche pas l'erreur qui lui correspond à cause, peut-être du réglage à ce niveau d'erreur trop haut...

    set_time_limit peut ne pas fonctionner selon les réglages du serveur pour php... notamment pour un hébergement mutualisé
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 35
    Points : 28
    Points
    28
    Par défaut
    Merci Humitake, j'ai rajouter la fonction set_time_limit(0) ça marche du tonnerre de dieu : 1h d'execution et aucun plantage. Encore merci.

  7. #7
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    Salam ; excuse de reouvrire cette discussion mais un point a attiré ma curiosité:
    1h d'execution et aucun plantage
    1 heure pour 50 000 enregistrements !!!!!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème de remplissage de table
    Par Jasmine80 dans le forum SGBD
    Réponses: 6
    Dernier message: 05/02/2009, 13h44
  2. Réponses: 2
    Dernier message: 27/03/2008, 15h59
  3. Réponses: 4
    Dernier message: 29/06/2007, 16h08
  4. [Excel_VBA]2 problèmes avec remplissage de la table
    Par tangjuncn dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 15/02/2007, 09h57
  5. Problème d'ordre de remplissage de table
    Par matana dans le forum Langage SQL
    Réponses: 6
    Dernier message: 24/03/2006, 16h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo