Bonjour,
Dans un script, je lis, ligne par ligne, un fichier xls contenant 10000 lignes et une quinzaine de colonnes.
Pour le lire toutes les lignes en affectant mes variables avec le contenu de chaque cellule et effectuer, pour chaque ligne,, le temps d'exécution est de 5.09149384499 micro secondes, sachant que mon champ tel est déclaré comme unique dans ma table.
Code : Sélectionner tout - Visualiser dans une fenêtre à part "SELECT * from cibles where tel = '" . $param[0] . "'"
Par contre, dès que j'exécute le code suivant pour chaque ligne, je passe en time out, malgré mon set_time_limit(600); en début de script :
Voici la méthode appellé dans mon objet $campagne :
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 if($rech == "Aucun résultat") { if($erreurCible == "Enregistrement effectué") $erreurCampagne_cible = $campagne->determinerCible($tab['tel'], $idCampagne, "Dernier id"); //Création de l'enregistrement campagne-cible dans la table campagnes_cibles else $erreurCampagne_cible = "pas d'insertion suite à la non-insertion précédente"; } else { if($erreurCible == "Modification enregistrée") $erreurCampagne_cible = $campagne->determinerCible($tab['tel'], $idCampagne, "tel"); //Création de l'enregistrement campagne-cible dans la table campagnes_cibles else $erreurCampagne_cible = "pas d'insertion dans la table campagnes_cibles suite à la non-mise-à-jour précédente"; } $textErreur .= ", et dans la table campagnes_cibles, " . $erreurCampagne_cible. "\r\n";
Voici la méthode select() appelée :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 public function determinerCible($telephone, $idCampagne, $maniere) { $tab[0] = $telephone; $tab[1] = $idCampagne; $tab[2] = $maniere; //L'insertion de l'id de la cible dans la table campagnes_cibles se fait soit via un select par le tel, soit par le las_insert_id() => $maniere == "tel" ou "Dernier id" $transaction = CtransactionsBdd::GetInstance("MYSQL", "speedcall"); $resuReq = $transaction->insert("MYSQL_determinerCible", $tab); return $resuReq; }
Et enfin, voici la fonction requete() appellée :
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 public function select($requ, $tableau) { $requete = requete($requ, $tableau); switch(self::$typeBase) { case "MYSQL": $result = mysql_query($requete, self::$connect); if(! $result) self::$erreur = "Impossible d'effectuer la sélection " . $requete; else { if (! mysql_num_rows($result)) self::$erreur = "Aucun résultat"; else { while($row = mysql_fetch_assoc($result)) $resultatSelect[] = $row; mysql_free_result($result); return $resultatSelect; } } break; } }
Donc, in fine, pour chaque ligne (il y en a 10000), je fais
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 function requete($req, $param) { switch($req) { ... case "MYSQL_determinerCible": $req = "insert into campagnes_cibles set refCampagne = " . $param[1] . ", refCible = "; if($param[2] == "tel") $req .= "(select id from cibles where tel = '" . $param[0] . "')"; else $req .= "LAST_INSERT_ID()"; return $req; break; } }
- soit- soit
Code : Sélectionner tout - Visualiser dans une fenêtre à part insert into campagnes_cibles set refCampagne = idCampagne, refCible = LAST_INSERT_ID()Comment pourrais-je m'y prendre pour avoir un temps d'exécution raisonnable?
Code : Sélectionner tout - Visualiser dans une fenêtre à part insert into campagnes_cibles set refCampagne = idCampagne, refCible = (select id from cibles where tel = 'telephone')
Merci d'avance pour votre aide
Partager