SEO工具、SEO教程、SEM教程、SEO培训、SEO优化、SEO服务、SEM服务等方面的资料,让大家掌握更多搜索引擎优化、网站优化等方面的知识。

2008年11月25日星期二

多数据库支持

分布式数据库的配置信息是定义在配置文件里面的,所以一般情况下是无法更改的。另外使用分布式数据库有个不足,就是无法同时连接多个不同类型的数据库。

多数据库支持
如果你的应用需要在特殊的时候连接多个数据库,那么可以尝试使用ThinkPHP的多数据库连接特性:包括相同类型的数据库和不同类型的数据库。
注意:所谓的相同类型数据库的定义是指和项目配置文件或者模型的数据库连接的数据库类型相同。
我们首先需要在模型类里面增加需要的数据库连接,例如:
我们在UserModel类增加多个数据库连接
首先定义额外的数据库连接信息
代码: 复制内容到剪贴板

1. $myConnect1 = array(
2. 'dbms' => 'mysql',
3. 'username' => 'username',
4. 'password' => 'password',
5. 'hostname' => 'localhost',
6. 'hostport' => '3306',
7. 'database' => 'dbname'
8. );

或者使用下面的定义
代码: 复制内容到剪贴板

1. $myConnect1 = 'mysql://username:passwd@localhost:3306/DbName';

定义之后就可以进行动态的增加和切换数据库了。
代码: 复制内容到剪贴板

1. $User->D("User");
2. // 增加数据库连接 第二个参数表示连接的序号
3. // 注意内置的数据库连接序号是0,所以额外的数据库连接序号应该从1开始
4. // 第三个参数表示是否是相同类型的数据库连接,这里我们假设和项目配置采用相同的数据库类型mysql
5. $User->addConnect($myConnect1,1,true);
6. // 如果需要增加另外的mssql数据库连接,使用下面的方法
7. $User->addConnect($myConnect1,1,false);
8. // 可以同时增加多个数据库连接 myConnect2和myConnect3的定义方式同myConnect1
9. $User->addConnect($myConnect1,1,false);
10. $User->addConnect($myConnect2,2,false);
11. $User->addConnect($myConnect3,3,true);

这样在UserModel里面就同时存在了4个数据库(加上项目配置里面定义的)连接。那么我们如何使用这些不同的数据库连接呢?ThinkPHP采用了灵活的切换机制,由应用来控制不同的数据库连接。例如,我们需要在其中一个应用里面用到$myConnect2 这个数据库连接,那么用下面的方法切换即可:
代码: 复制内容到剪贴板

1. $User->switchConnect($myConnect2);

switchConnect方法会智能识别该连接是否是相同类型的连接
如果需要删除之前动态添加的连接,可以使用delConnect方法,例如:
代码: 复制内容到剪贴板

1. // 删除连接序号为2的数据库连接
2. $User->delConnect(2);

没有评论:

关注者

博客归档