Bonjour à tous,

Voila j'ai un souci sur de gros enregistrement avec pdo et le mode transactionnel.
Voila mon code pour environ 20 000 produits dans mon fichier:

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
while ($xml = $file->read()) { // lecture d'un xml pour récuperer les bloc produits (20 000)
 
			//récupération de l'id vendeur si il existe
			$req= $db->prepare("SELECT id FROM `vendeur` WHERE ref = :ref");
			$req->execute(array(':ref' => $db->quote($node->ref)));
			$userid = $req->fetch(PDO::FETCH_ASSOC);
 
 
	try{
			$db->beginTransaction(); 
 
				$db->exec( "INSERT INTO `produits` (TOUTS LES ELEMENTS PRODUITS	) VALUES ('".$db->quote(TOUTES LES VALEURS)."')");
				//l'id pour les insert suivant
				$produit = $db->lastInsertId();
 
				$db->exec( "INSERT INTO `region` (`produitid`, `zone`, `ville`, `expo`) VALUES ( ".$db->quote($produit).", '".$db->quote($node->zone)."', '".$db->quote($node->ville)."', '".$db->quote($node->expo)."')");
				$db->exec( "INSERT INTO `photo` (`produitid`, `nom`, `url`, `visible`) VALUES ( ".$db->quote($produit).", '".$db->quote($node->image)."', '".$db->quote($node->imgurl)."', '".$db->quote($node->visible)."')");
 
				if(!empty($userid)){
					$db->exec( "INSERT INTO `asso_prod` (`produitid`, `vendeurid`) VALUES ( ".$db->quote($produit).", ".$db->quote($userid).")");
				}else{
					$db->exec( "INSERT INTO `vendeur` (`nom`, `prenom`, `ref`, `email`) VALUES ( '".$db->quote($node->nom)."', '".$db->quote($node->prenom)."', '".$db->quote($node->ref)."', '".$db->quote($node->email)."')");
					$last = $db->lastInsertId();	
					$db->exec( "INSERT INTO `asso_prod` (`produitid`, `vendeurid`) VALUES ( ".$db->quote($produit).", ".$db->quote($last).")");				
 
				}
 
			$db->commit();
 
		}catch(Exception $e) {
  			$dbh->rollBack();
  			echo "Failed: " . $e->getMessage();
		}
}
Quand je fais cela rien ne se passe dans les insert. Mes tables restent vide et mon serveur part en vrac
Avez vous une idée ?