【几个线程同时进行事务并发的有关问题。】教程文章相关的互联网学习教程文章

ThinkPHP5.0 模型类事务性操作【代码】

//创建一个模型类 $release=new \app\admin\model\Release();$release->startTrans();//开启事务$release->rollback();//事务回滚$release->commit();//提交事务 ————————————————<?php //例子如下: public function transAction() {$modelA = model(A);$modelA->startTrans();      // 开启事务A$result = $modelA->save($data1);if($result === false){$modelA->rollBack();        //...

不要使用PHP,PDO和Postgres回滚事务中的错误【代码】

我有一个非常广泛的基于PHP / Yii的PHP更新脚本,它可以更新不同数据库类型的数据库(MSSQL,Postgres和MySQL). 整个脚本在事务中运行.但是,有一些语句会导致查询错误(例如,如果表上已存在某个键).我用try / catch语句包围了这些 – 到目前为止这在MySQL中运行良好 但是在Postgres上发出无效查询后,事务会自动失败.以下所有语句都显示以下错误消息:CDbCommand failed to execute the SQL statement: SQLSTATE[25P02]: In failed sql ...

PHP PDO – 没有活动事务【代码】

我在php脚本中遇到问题.如果其中至少有一个失败,我想进行多次查询并能够全部回忆它们.您可以在下面找到我正在使用的脚本的简单示例:$tags_input = array(6,4,5); $conn = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME.';charset=utf8', DB_USER, DB_PASSW, array( PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"));$conn->beg...

php – 如何判断当前事务是否会更改Doctrine 2中的任何实体?【代码】

我正在使用Doctrine来保存用户数据,我希望有一个最后的修改字段.下面是用户按下Save后我想如何保存表单的伪代码: >开始交易>做很多事情,可能是查询数据库,可能不是>如果此交易有任何改变 >修改上次更新的字段 >提交事务 有问题的部分是这个交易会改变什么. Doctrtrine可以给我这样的信息吗? 如何判断当前交易中的实体是否已更改? 编辑 只是为了清理,我试图在一个名为User的实体中修改一个名为lastUpdated的字段,如果在提交当前事...

php – 如何在同一事务中保存和删除【代码】

我需要在一次交易中保存一些cms页面并删除其他页面. 那么,我该如何做到这一点:$page1->save(); $page2->delete();单笔交易?作为参考,$page1和$page2都来自Mage :: getModel(‘cms / page’).另外,我找到了一个很好的答案here告诉我如何在事务中进行两次保存,而不是如何同时执行保存和删除.怎么做到呢?解决方法:如果必须在单个事务中执行此操作,只需对要删除的项目调用isDeleted(true)://Build out previous items, then for ea...

如何在控制器中放置begin-commit事务:cakephp?【代码】

我正在研究一个会更新几张桌子的控制器.我可以从我的控制器调用我的模型,在模型函数内部我可以开始并提交我的查询,它可以在发生错误时回滚. 这是我的样本: 控制器://update table when update button is clickedif (!empty($this->data)) {if ($this->Item->update($this->data)) {$this->Item->create();$this->redirect('/sample');return;} else {$this->set('data', $this->data);}}模型:function update($data) {$this->be...

php – 在封装PDO事务时使用闭包不起作用.为什么?【代码】

我目前在封装PDO事务方面存在问题,易于使用;执行事务后,没有发生数据库更改!我的想法是只提供在PDO事务中执行所需的参数和可调用事务.受保护的executeTransaction方法定义PDO事务的封装,如下所示.客户端方法是getNextWidWithLock,它使用executeTransaction方法.我试图将交易从关闭中移出来并且有效!可能是为什么它似乎没有将更改提交到数据库的原因.class ParentRepository{ .../*** Executes a transaction with logging. * @pa...

php – 使用try catch的PDO事务语法【代码】

使用PDO事务时尝试catch的原因是什么?$dbh->beginTransaction(); try {} catch (Exception $e) {}要么try {$dbh->beginTransaction();} catch (Exception $e) {}解决方法:现有的答案似乎表明,由于$dbh-> beginTransaction()可能抛出PDOException,它应该在实际事务代码的同一个try块中,但这意味着rollBack()代码本身是错误的,因为它可以在没有事务的情况下调用rollBack(),这也可能引发另一个PDOException. 正确的逻辑顺序是,在创建...

php – 防止Web应用程序中的同时事务【代码】

我们有一个Web应用程序(它是一个游戏),有许多各种形式和元素,它们充当按钮并在服务器上触发一些操作.问题是如果用户太快点击按钮或在两个标签中打开网站然后同时发出一些操作,用户有时会混淆我们的应用程序.我们有一些基本的保护 – MySQL事务,一些双击防止Javascripts,但无论如何有时候只是跳过了.当然,最好的方法是以不会混淆系统的方式重新设计所有SQL事务和支持功能.这种混淆的一个例子是同时发出两个更新 – 一个Web请求更改...

如何在PHP ADODB中回滚事务【代码】

我正在尝试在php(mysql-driver)中使用ADODB进行数据库事务,虽然由于某种原因我无法使交易有效.目前代码看起来有点像这样(为简化顺序而简化)// Start DB-connection $db = NEWADOConnection('mysql'); $db->debug = false; $db->disableBlobs = false; $db->PConnect($host, $login, $password, $database); or die ("Connection failed");// Start DB-transaction $db->autoCommit = false; // According to doc, this should not ...

ThinkPHP开发技巧集锦(11):使用事务

注:使用事务处理的话,需要数据库引擎支持事务处理。比如 MySQL 的 MyISAM 不支持事务处理,需要使用 InnoDB 引擎。 第一种方法:自动控制事务处理 使用 transaction 方法操作数据库事务,当发生异常会自动回滚,例如:Db::transaction(function(){Db::table('think_user')->find(1);Db::table('think_user')->delete(1); }); 第二种方法:手动控制事务// 启动事务 Db::startTrans(); try{Db::table('think_user')->find(1);Db::t...

php 事务【代码】【图】

<?php $dbhost = localhost:3306; // mysql服务器主机地址 $dbname = test; $dbuser = root; // mysql用户名 $dbpass = root; // mysql用户名密码 $conn = mysqli_connect($dbhost, $dbuser, $dbpass,$dbname); if(! $conn ) {die(连接失败: . mysqli_error($conn)); } // 设置编码,防止中文乱码 mysqli_query($conn, "set names utf8"); mysqli_select_db( $conn, RUNOOB ); mysqli_query($conn, "SET AUT...

thinkphp对180万数据批量更新支持事务回滚

目前测试180万多的数据,大概是正常的,不知道再多了会怎么样了我们要给表改成 innodb类型 干货来了: set_time_limit(0); ini_set("memory_limit","800M");//180万数据 数据越多越消耗内存 $t1 = microtime(true); $Model = M(orderlisttest);//先用 M 函数实例化一个空对象 $rr[goods_tuihuo]=1; $subQuery = $Model->field(orderlist_id)->table(vc_orderlisttest)->where($rr)...

thinkphp orm数据库事务操作用法

使用事务处理的话,需要数据库引擎支持事务处理。比如 MySQL 的 MyISAM 不支持事务处理,需要使用 InnoDB 引擎。 使用 transaction 方法操作数据库事务,当发生异常会自动回滚,例如: 自动控制事务处理 Db::transaction(function(){ Db::table(think_user)->find(1); Db::table(think_user)->delete(1);});也可以手动控制事务,例如: // 启动事务Db::startTrans();try{ Db::table(think_user)->find(1); Db::table(t...

对PHP中的MySQL事务感到困惑【代码】

如果使用事务,是否会锁定表并阻止其他用户进行任何更改? 伪代码:begin transactionissue a select queryissue a update queryend transaction因此,在这两个查询之间,是否可以通过另一个更新语句或从另一个页面发出的内容进行一些更改? 还是自交易开始以来,使用的表会被锁定吗? 事务表和锁表有什么区别?事务会隐式锁定表吗? 编辑:这就是我想做的:{// Check Table2 (posted messages)// If is_approved is FALSE for a given...

并发 - 相关标签