Comment puis-je mettre en œuvre commit/rollback pour MySQL en PHP?
Eh bien en fait j'ai ce script qui prend du temps pour s'exécuter et, occasionnellement, des temps et des feuilles semi-complète de données flottant autour de ma base de données. (Oui, je sais que dans un monde parfait, je voudrais corriger ce QUE, au lieu de la mise en œuvre de validations et les restaurations, mais je suis contraint de ne pas le faire)
Voici mon code de base (abrutir pour des raisons de simplicité):
$database = new PDO("mysql:host=host;dbname=mysql_db","username","password");
while (notDone())
{
$add_row = $database->prepare("INSERT INTO table (columns) VALUES (?)");
$add_row->execute(array('values'));
//PROCESSING STUFF THAT TAKES A LONG TIME GOES HERE
}
$database = null;
Donc mon problème est que si que si l'ensemble du processus à l'intérieur de cette boucle while n'est pas complète, alors je ne veux pas la ligne insérée à y rester. Je pense que d'une certaine façon, je pouvais utiliser les commits/restaurations au début et à la fin de la boucle while pour ce faire, mais ne savent pas comment.
OriginalL'auteur Andrew G. Johnson | 2008-11-30
Vous devez vous connecter pour publier un commentaire.
Prendre un coup d'oeil à ce tutoriel sur les transactions avec des AOP.
Sont essentiellement constituées au long de l'exécution de code dans:
Et selon cette AOP de document de la page:
"Lorsque le script se termine, ou lorsqu'une connexion est sur le point d'être fermé, si vous avez une excellente opération, PDO automatiquement de rouler de nouveau. "
Si vous perdez de l'opération qui a été en attente lorsque le script a expiré.
Mais vraiment, vous devriez repenser cette sorte qu'il ne dépend pas de la scriipt de rester en vie.
OriginalL'auteur Brian C. Lane
Vous avez besoin pour utiliser InnoDB des tableaux pour les transactions ensuite utiliser une bibliothèque comme PDO ou MySQLi qui les prend en charge.
OriginalL'auteur Coder2000
OriginalL'auteur Neelesh
OriginalL'auteur