用FEALPHP来切换不同的MySQL数据库

考虑到电信网通互连的问题,把MySQL分成两个,

库A(在程序本地Localhost)
库B(在另外一个网络中,使用IP链接)

库B会实时COPY内容回给库A,但是库A中的内容不会COPY给库B,主要问题也在这里。

打算是

1.SELECT的操作放到库A,也就是本地数据库来操作 -- 对应FLEA的TDG类中的find,findAll...

2.INSERT, UPDATE, DELETE操作放到库B来操作 -- 对应FLEA的TDG类中的create,update...

3.库B内容实时COPY回给库A

解决方案:

本来我的Model里面那些类全部是继承FLEA_Db_TableDataGateway的。

然后在中间弄个类Model_General,让Model_General 可以继承于FLEA_Db_TableDataGateway,其他Model类继承于Model_General

然后在Model_General中再写上面对两个DSN的代码。。。

应用程序配置里面有
'dbDSN' = array(                   
      'driver'    => 'mysql',
      'host'      => '127.0.0.1',
      'login'     => 'user',
      'password'  => '123456',
      'database'  => 'tbla'
),
'dbDSN_NETWORK' = array(                   
      'driver'    => 'mysql',
      'host'      => '186.23.233.44',
      'login'     => 'user2',
      'password'  => '123456',
      'database'  => 'tbla'
),

<?php
FLEA::loadClass('FLEA_Db_TableDataGateway');
class Model_General extends FLEA_Db_TableDataGateway
{
        function findAll($conditions = null, $sort = null, $limit = null, $fields = '*', $queryLinks = true, $recursion = 0){
                $dbo = & FLEA::getDBO(FLEA::getAppInf('dbDSN'));

                // 或者:$dbo = & FLEA::getDBO(FLEA::getAppInf('dbDSN_NETWORK'));

                parent::setDBO($dbo);
                return parent::findAll($conditions, $sort, $limit, $fields, $queryLinks, $recursion);
        }
}
?>

你可能感兴趣的:(数据库,mysql,database,delete,NetWork,login)