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();
}
}