php事务处理
Ⅰ php可以实现每天6点自动处理事务吗
Linux的cron本身具备这个功能,需要执行的任务放在/etc/crontab目录下的相关文件里就可以了,Linux/Unix系统之所以稳定持久,我想一部分的原因也是因为这个cron,很多维护的工作都在这里面设置好了
就算php能够定时执行,也会大大加重系统的负担,没有必要的
Ⅱ thinkphp中怎么使用多表事务处理
在 Thinkphp 3.2.3 下测试通过。
Thinkphp 对事务的处理非常简单。单表事务只需使用 M 函数实例化一个数据表对象,如果操作成功则提交,失败则回滚。例如:
[php]view plain
$User=M('user');
$User->startTrans();//开启事务
$id=$User->add(['name'=>'hongxuan']);
//
//TODO其它操作
//
if($id){//插入成功
$User->commit();//提交
}else{//添加失败
$User->rollback();//回滚
}
- 对多表的事务处理也非常简便。先用 M 函数实例化一个空对象,使用 table 方法进行多个表的操作,如果操作成功则提交,失败则回滚。例如:
$Model=M();//实例化一个空对象
$Model->startTrans();//开启事务
//
//TODO其它操作
//
//table方法中的数据表名要带上前缀,这里为“test_”。
$Model->table('test_user')->add(['name'=>'admin']);
$Model->table('test_key')->add(['key'=>'test']);
$Model->table('test_value')->add(['value'=>'test']);
$Model->table('test_task')->add(['task'=>'test']);
if(操作成功的条件){
$Model->commit();//成功则提交事务
}else{
$Model->rollback();//否则将事务回滚
}
[php]view plain
Ⅲ 简述什么是事务处理以及PHP中PDO事务处理的实现过程
事物是一个原子操作。比如说要执行一系列操作 用户冲钱 加钱 然后加积分。中间可能某条失败 让它回滚
Ⅳ php事务处理后怎样进行页面跳转
<?php
header("Location: http://www.example.com/");
?>
把http://www.example.com/改成你要跳转到的页面就行了。
Ⅳ PHP一般是如何做sql事务处理的
事务是tran
不是trin
begin
tran
delete
from
a
where
uid='002'
delete
from
b
where
uid='002'
commit
tran
如果没有特殊需要,不必使用rollback
tran,执行两个表删除的时候,如果遇到某个语句出错,都会自动回滚的。
Ⅵ php中有没有事务的概念
事务操作一般情况下只是在数据库层面上体现,在PHP中是没有事务概念的。常用的数据库MySQL,SQLServer,Oracle等都支持事务处理。:)
其实很简单就是SQL语句,在执行事务前使用Begin Trans(说明不同的数据库事务处理不同,思路相同)
然后进行事务处理,如果成功则Commit提交事务,如果失败可以使用Rollback回滚事务。
希望对你有帮助。
Ⅶ PHP中PDO的事务处理如何分析
事务处理具有四个特性:原子性、一致性、独立性、持久性。
并不是所有的数据库都支持事务处理的,PDO 为能够执行事务处理的数据库提供事务支持。
配置事务处理需注意:
1、关闭 PDO 的自动提交;
$pdo->setAttribute(PDO::ATTR_AUTOCOMMIT, false);
2、开启一个事务需要的方法;
$pdo->beginTransaction(); // 开启一个事务
$pdo->commit(); // 提交事务
$pdo->rollback(); // 回滚事务
3、一般事务处理是运行在 try...catch...语句中,当事务失败时执行 catch 代码段。
php
try {
$pdo->beginTransaction(); // 开启一个事务
$row = null;
$row = $pdo->exec("xxx"); // 执行第一个 SQL
if (!$row)
throw new PDOException('提示信息或执行动作'); // 如出现异常提示信息或执行动作
$row = $pdo->exec("xxx"); // 执行第二个 SQL
if (!$row)
throw new PDOException('提示信息或执行动作');
$pdo->commit();
} catch (PDOException $e) {
$pdo->rollback(); // 执行失败,事务回滚
exit($e->getMessage());
}
?>
在事务中的 SQL 语句,如果出现错误,那么所有的 SQL 都不执行。当所有 SQL 有无误的时候,才提交执行。
Ⅷ php中事务处理是什么意思
事务:是若干事件的集合
事务处理:当所有事件执行成功,事务才执行;若有任何一个事件不能成功执行,事务的其它事件也不被执行
Ⅸ 支付宝及时付款怎么用php事务处理
你用的框架还是原生?
原生和框架代码不同 但是大概意思都是一样的。例如原生的pdo吧:
<?php
$pdo=newpdo("mysql:host=localhost;dbname=mydb","root","root",array(PDO::ATTR_AUTOCOMMIT=>0));
try{
$pdo->beginTransaction();//开启事务处理
$price=500;
$sql="updatexxsetprice=price-{$price}whereid=1";
$affected_rows=$pdo->exec($sql);
if(!$affected_rows)
thrownewPDOException("失败");//那个错误抛出异常
$sql="updatezhanghaosetprice=price+{$price}whereid=3";
$affected_rows=$pdo->exec($sql);
if(!$affected_rows)
thrownewPDOException("失败");
echo"交易成功!";
$pdo->commit();//交易成功就提交
}catch(PDOException$e){
echo$e->getMessage();
$pdo->rollback();
}
/*这是原生pdo的事务一个简单实例
*至于框架就更简单了一般model类都有定义
*具体流程意思就是开启事务事务出错就回滚rollback();事务成功就提交commit();
*/
?>
Ⅹ 请问在php中如何控制多表事务
php框架中多表事务操作实例,参考如下:
function makeAcquire($nUsers,$nAwards)
{
//更新数据库
$tranDb = new Model();
$tranDb->startTrans();
for($i = 0; $i < sizeof($nUsers); $i++)
{
//更新表Acquire
$flagAc = $tranDb->table('Acquire')->add($acquire);
//更新表Users
$where = array('u_id'=>$nUsers[$i]['u_id']);
$flagU = $tranDb->table('Users')->where($where)->setInc('u_man_count',1);
//更新表Award
$where = array('a_id'=>$nAwards[$i]['a_id']);
$flagA = $tranDb->table('Award')->where($where)->setDec('a_count',1);
}
if($flagAc && $flagU && $flagA)
{
$tranDb->commit();
}
else
{
$tranDb->rollback();
}
}