考虑到电信网通互连的问题,把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);
}
}
?>