Bonjour
je cherche à optimiser ma requete.
je m'explique avec la requête ci dessous j'ai une erreur "Maximum execution time of 120 seconds exceeded ".
si je retire les conditions if elseif et else (ligne 28 à 35). la requête fonctionne en en moins de 5 secondes et sans erreur.
Comment optimiser ce code dont le but est de récupérer les données de la première ligne du fichier CSV pour créer ma table.
je vous remercie d'avance pour votre aide
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 require('_connexion.php'); if (isset($_POST["envoyer"])) { $table = pathinfo ($_FILES["file"]["name"], PATHINFO_FILENAME); $fich=str_replace('_', '',$table); $fichier=str_replace('-', '_',$fich); $file = $_FILES["file"]["tmp_name"]; $delimiteur=";"; $taille = 1000; var_dump($table); var_dump($fichier); var_dump($file); // get structure from csv and insert db ini_set('auto_detect_line_endings',TRUE); if (($handle = fopen($file,'r')) !==FALSE ) { // ... obtenir le contenu de la ligne $data = fgetcsv($handle,$taille,$delimiteur); $num = count($data); var_dump($data); for($f=0;$f<$num; $f++) { if ($f=0){ $fields[] = $data[$f].' int(11)'; } elseif ($f=1){ $fields[] = $data[$f].' DATETIME'; } else { $fields[] = $data[$f].' VARCHAR(45)'; } //var_dump($fields); } try { $sql='CREATE TABLE '.$fichier.' ('. implode(',', $fields) .');'; var_dump($sql); $req=$pdo->query($sql); } catch(exception $e) { die('erreur : '.$e->getMessage()); } } fclose($handle); }
Partager