热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Discuzx2.5x3.0如何配置多个数据库同时使用

说点什么好?头会遇到这是。。。尴尬。。。。用户部分数据信息来源同库另外一个实例现在要改成跨库.其实是做成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"));


推荐阅读
author-avatar
老王福_640
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有