作者:老王福_640 | 来源:互联网 | 2014-05-27 15:53
说点什么好?头会遇到这是。。。尴尬。。。。用户部分数据信息来源同库另外一个实例现在要改成跨库.其实是做成api还是直接数据库调用对我来说都很容易。api还可以做个缓存可惜我对另外一个项目知之甚少。网上没有关于discuz多数据库调用方式今天
说点什么好? 头会遇到这是。。。尴尬。。。。
用户部分数据 信息来源同库另外一个实例 现在要改成跨库 .
其实是做成api还是 直接数据库调用对我来说都很容易。 api 还可以做个缓存可惜我对另外一个项目知之甚少。
网上没有关于discuz 多数据库调用方式 今天这里给大家带来一个 我不确定这是一定最符合 disucz 原意的 多实例数据库
代码调用 但一定和好用。
成功案例基于 discuz 2.5
修改 conf/config_global.php
1
2
3
4
5
6
7
8
9
|
$_config['db']['2']['dbhost'] = '192.168.1.2';
$_config['db']['2']['dbuser'] = 'root';
$_config['db']['2']['dbpw'] = '123';
$_config['db']['2']['dbcharset'] = 'utf8';
$_config['db']['2']['pconnect'] = '0';
$_config['db']['2']['dbname'] = 'op';
$_config['db']['2']['tablepre'] = 'op_';
//那些表在另一个数据库读取
$_config['db']['map']['nav'] = 2;
|
修改source/class/db/db_driver_mysql.php 找到table_name 函数
增加一个字段
function table_name($tablename) {
if(!empty($this->map)
&& !empty($this->map[$tablename])) {
$id =
$this->map[$tablename];
if(!$this->link[$id]) {
$this->connect($id);
}
$this->curlink = $this->link[$id];
//从数据库
增加了这一句
return
$this->config[$id]['tablepre'].$tablename;
} else {
$this->curlink = $this->link[1];
}
return
$this->tablepre.$tablename;
}
运行 执行成功
print_r(DB::fetch_first("SELECT * FROM ".DB::table('nav')."
limit 1"));