在 bootstrap 上重用数据库适配器以在 Zend Framework 中设置自定义处理程序数据库会话
Reuse DB adapter on bootstrap to set custom handler DB session in Zend Framework
在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
因此,它创建了两次数据库连接。这种情况发生在对我们的网络应用程序的每个请求中,所以我想避免这种情况,因为这是一个性能问题。
提前致谢!!
您不需要在会话处理程序尝试执行之前创建默认适配器$this->bootstrap('db');
我想初始化一次数据库连接就足够了。
在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
因此,它创建了两次数据库连接。这种情况发生在对我们的网络应用程序的每个请求中,所以我想避免这种情况,因为这是一个性能问题。
提前致谢!!
您不需要在会话处理程序尝试执行之前创建默认适配器$this->bootstrap('db');
我想初始化一次数据库连接就足够了。