Bien le bonjour à tous.

Je viens solliciter vos lumières au sujet d'un problème de performance dans une boucle php.

Je lis un fichier CSV qui fait 15000 lignes

Je parcours donc ligne par ligne pour récupérer la valeur qui m’intéresse et je fais un update de ma table

Le souci, vous l'aurez compris c'est que je dois faire 15000 update, ce qui représente 0.141 seconde par update .. donc 35 minutes d'éxécution

Je vous met ici le code simplifié

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
 
<?php
$u = $db->prepare("UPDATE table set qte = :stock where id_produit = :id_produit AND taille = :taille AND code_interne = :matiere");	
 
$fic = fopen("export.csv", "r");
while($tab = fgetcsv($fic,1024,';')){
 
$libelle =  $tab['18']; /* Colonne LIBELLE */
$matiere =  $tab['36']; /* Colonne COULEUR  */
$taille =  $tab['42']; /* Colonne TAILLE */
$stock =  $tab['46']; /* Colonne STOCK */
 
$u->bindParam(':stock', $stock, PDO::PARAM_INT);
$u->bindParam(':id_produit', $id_produit, PDO::PARAM_INT);
$u->bindParam(':taille', $taille, PDO::PARAM_STR);
$u->bindParam(':matiere', $matiere, PDO::PARAM_STR);
$u->execute();
}
?>
Je vous demande donc si il est possible d'optimiser tout cela ?
Toute méthode est bonne à prendre, sachant qu'aujourd'hui il y a 15000 lignes, mais demain il y en aura peux être 30000

Merci infiniment pour votre aide

Cdt, Xavier