Zend Framework 事务处理 问题
官方给出一个示例,如下:
<?php
// 创建一个 $db对象, 然后开始做一个事务处理.
$db->beginTransaction();
// 尝试数据库操作.
// 假如成功,commit该操作;
// 假如, roll back.
try {
$db->query(...);
$db->commit();
} catch (Exception $e) {
$db->rollBack();
echo $e->getMessage();
}
?>
[general]
db.adapter = PDO_MYSQL
db.config.host = localhost
db.config.username = root
db.config.password = 123456
db.config.dbname = testdb
db.config.charset = utf8
date_default_timezone = "PRC"
<?php
require_once 'Zend/Config/Exception.php';
require_once 'Zend/Config/Ini.php';
require_once 'Zend/Registry.php';
require_once 'Zend/Db.php';
require_once 'Zend/Db/Table.php';
//require_once 'common/Blowfish.php';
//require_once 'common/Hosts.php';
class Common_Util
{
public static function getDb($configName,$setcharset=false)
{
if($configName)
{
$config=new Zend_Config_Ini('../config.ini',$configName);
$registry= Zend_Registry::getInstance();
$registry->set('config',$config);
$params=$config->db->config->toArray();
$params['options']=array(PDO::ATTR_PERSISTENT => true);
$db = Zend_Db::factory($config->db->adapter,$params);
if($setcharset)
{
$charset =($params['charset']);
$db->query("set names $charset;");
}
return $db;
}
else
{
return false;
}
}
}
<?php
require_once 'Zend/Session/Namespace.php';
require_once 'Zend/Db.php';
require_once 'Zend/Validate/EmailAddress.php';
require_once 'Zend/Cache.php';
require_once '../application/common/Util.php';
require_once '../application/common/DbBase.php';
require_once '../application/models/jsclass.php';
require_once '../application/models/shop.php';
require_once '../application/models/ajaxpage.php';
require_once '../application/models/shoptest.php';
class ShopController extends Zend_Controller_Action
{
protected $_db;
function init()
{
$this->_db=Common_Util::getDb("general",true); //实例化数据库字符串连接
$this->view->baseUrl = $this->_request->getBaseUrl();
$this->defaultNs = new Zend_Session_Namespace('Default');
}
public function shopaddtestAction()
{
$dds=new shop("shop_type",$this->_db);
for($i=2147483645;$i<2147683650;$i++)
{
$data=array("shop_id"=>$i,"type"=>$i);
$dds->inserttest($data);
}
}
}
<?php
require_once "Zend/Validate/Digits.php";
class Shop
{
protected $_name = '';
protected $_db;
public function __construct($name=null,$db=null)
{
if($db)
{
$this->_db=$db;
}
if($name)
{
$this->_name=$name;
}
}
public function inserttest($data)
{
if($data)
{
$this->_db->beginTransaction();
try
{
$rs = $this->_db->insert($this->_name,$data);
if($rs)
{
$rs = $this->_db->lastInsertId();
}
return $rs;
$this->_db->commit();
}
catch(Exception $e)
{
$this->_db->rollback(); error_log($e->getMessage());
}
}
return false;
}
}
return $rs;
$this->_db->commit();
$dds=new shop("shop_type",$this->_db);
for($i=2147483645;$i<2147683650;$i++)
{
$this->_db->beginTransaction();
try
{
$data=array("shop_id"=>$i,"type"=>$i);
$dds->inserttest($data);
$this->_db->commit();
}
catch(Exception $e)
{
$this->_db->rollback(); error_log($e->getMessage());
}
}