快速的問題,我有一些代碼,看起來像這樣:兩對交易行爲
function foobar(array& $objects, $con = null)
{
if (is_null($con))
$con = DbSingleton::getConnectio();
$con->beginTransaction(); // <- question 1
try
{
foreach($objects as $object)
{
// allocate memory for new object
$new_obj = new MyShiningNewObject();
// do something to the new object ...
$new_obj->setParentId($object->getId());
$new_obj->save($con);
// mark for garbage collection
unset($new_obj); // <- question 2
}
$con->commit();
}
catch(Exception $e){ $con->rollBack(); }
}
我的問題是:
我begining交易,這很可能是一個嵌套事務。在嵌套事務的情況下,如果拋出異常並且我回滾,回滾到最後的事務有多遠 - 常識表明這應該是這種情況,但從來不知道。
我釋放了內存(ok,Zend GC標記爲'freeable')。因爲我在循環之後提交事務(該變量在循環中標記爲可變),這是否安全 - 我的意思是將數據安全地存儲在數據庫中,即使我沒有設置該值來自哪個變量?