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é
Je vous demande donc si il est possible d'optimiser tout cela ?
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(); } ?>
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
Partager