在 bootstrap :
public function _initSession()
{
$config = Zend_Registry::get('config'); // application.ini
$params = $config->default->resources->db->params->toArray();
$db = Zend_Db::factory($config->default->resources->db->adapter, $params);
Zend_Db_Table_Abstract::setDefaultAdapter($db);
$config = array(
'name' => 'session',
'primary' => 'id',
'modifiedColumn' => 'modified',
'dataColumn' => 'data',
'lifetimeColumn' => 'lifetime'
);
Zend_Session::setSaveHandler(
new Cokidoo_Session_HandlerCache(
new Cokidoo_Session_HandlerDb($config)));
}
在 application.ini 中:
default.resources.db.adapter = "PDO_MYSQL"
default.resources.db.params.username = myuser
default.resources.db.params.password = mypasss
default.resources.db.params.host = myhost
default.resources.db.params.dbname = mydbname
default.resources.db.params.driver_options.1002 = "SET NAMES utf8"
我正在设置自定义处理程序以在MySQL中存储会话。为此,我需要将默认适配器设置为数据库连接。通过这样做,我创建了一个数据库连接。但我意识到,之后,Zend在调用中创建了一个新连接
Zend_Db_Adapter_Pdo_Abstract->_ connect
因此,它正在创建两次数据库连接。这发生在我们的网络应用程序的每个请求中,所以我想避免这种情况,因为这是一个性能问题。
提前致谢!!
答案 0 :(得分:0)
您不需要在会话处理程序尝试执行$this->bootstrap('db');
之前创建默认适配器。我想这对于初始化数据库连接一次就足够了。