如何在codeigniter普通mysql和自定义pdo中运行并发数据库连接[重复]
Posted
技术标签:
【中文标题】如何在codeigniter普通mysql和自定义pdo中运行并发数据库连接[重复]【英文标题】:how to run concurrant db connections in codeigniter normal mysql and custom pdo [duplicate] 【发布时间】:2019-03-17 14:11:16 【问题描述】:下午。 我有一个奇怪的问题。 我需要在 codeigniter 实例中与我们的数据库建立两个连接。 我需要有标准的 ci 方法,但我还需要创建一个 pdo 类实例以用于新功能设置。 不幸的是,我们必须使用旧的数据库连接来运行 v1.0 系统和使用 pdo db 对象的新 v2.0 系统。
如何创建这个 pdo 类的全局实例,以便每个进程调用 codeigniter 时只实例化一次。
【问题讨论】:
【参考方案1】:您应该在application/config/database.php
中添加另一个数据库并更改dbdriver
和hostname
之类的
$db['pdodb']['hostname'] = "mysql:host=localhost'";
$db['pdodb']['username'] = "root";
$db['pdodb']['password'] = "";
$db['pdodb']['database'] = "your_db";
$db['pdodb']['dbdriver'] = "pdo";
$db['pdodb']['dbprefix'] = "";
$db['pdodb']['pconnect'] = TRUE;
$db['pdodb']['db_debug'] = FALSE;
$db['pdodb']['cache_on'] = FALSE;
$db['pdodb']['cachedir'] = "";
$db['pdodb']['char_set'] = "utf8";
$db['pdodb']['dbcollat'] = "utf8_general_ci";
$db['pdodb']['swap_pre'] = "";
$db['pdodb']['autoinit'] = TRUE;
$db['pdodb']['stricton'] = FALSE;
你可以像这样加载数据库
$pdodb= $this->load->database('pdodb', TRUE);
最后你可以像这样执行查询
$query = $pdodb->select('col1, col2,col3')->get('your_table');
更多关于multiple database的信息
【讨论】:
好的,但是我可以在流程开始时调用一次,然后在需要的地方使用它吗? 当你想执行查询时,首先你需要数据库对象$pdodb= $this->load->database('pdodb', TRUE);
这行返回你的数据库对象并遵循执行查询过程(上面我提到了两行代码有助于执行查询)
以上是关于如何在codeigniter普通mysql和自定义pdo中运行并发数据库连接[重复]的主要内容,如果未能解决你的问题,请参考以下文章
Prometheus 监控云Mysql和自建Mysql(多实例)