Bonjour à tous,
Il m'est demandé de mettre à jour une base de données SQL à partir de données contenues dans un fichier texte, les données correspondant à chaque enregistrement se trouvant sur une même ligne et séparées par des splits "|".
J'ai donc élaboré le code suivant pour remplir chaque table :
A priori, tout marche bien (les premières lignes sont insérées nikel), mais le soucis, c'est que le nombre l'enregistrement a insérer à chaque fois est très grand. Aussi, je me retrouve avec le message suivant :
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 /* Relecture du fichier */ $array_file = file('C:\Program Files\wamp\www\demo_test\donnees\patients.txt'); for ($i = 1; $i <= sizeof($array_file); $i++) { $array_insert [6] ; $cpt = 0 ; for ($j = 1; $j <= 6; $j++){ $ptr = strpos(substr($array_file[$i],$cpt),"|"); $array_insert[$j] = str_replace("'"," ",substr($array_file[$i],$cpt,$ptr)); $cpt = $cpt + $ptr + 1 ; } // connection à la base include ('connection.php'); /* !!!! INSERTION DANS LA BASE !!!! */ $sql_d="INSERT INTO patient (SIGLE,CENTRE,PATIENT,PHASE,INITIALES,DATE_INC)"; $sql_d.="VALUE ('$array_insert[1]','$array_insert[2]','$array_insert[3]',"; $sql_d.="'$array_insert[4]','$array_insert[5]','$array_insert[6]') ;"; $req_d = mysql_query($sql_d) or die('Erreur SQL !<br>'.$sql_d.'</br>'.mysql_error()); // déconnexion de la base MySQL mysql_close(); }
Vu que les requêtes effectuées à chaque tour de boucle ne sont pas très compliquées, il me semblait bizzard que leur temps d'exécution puissent dépasser le timeout d'exécution. J'ai également essayé de voir si cela ne venait pas du fichier source, mais ce n'est pas le cas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Fatal error: Maximum execution time of 30 seconds exceeded in C:\Program Files\wamp\www\demo_test\base_update_patient.php on line 31
Voilà. Toute aide est la bienvenue !
D'avance merci.
Jeannot
Partager