我正在开发一个扫描/抓取/监控某些网站的应用程序
该应用程序可在以下位置免费获得www.linkbook.co
现在,我将解释我想要做什么:
我有一个主数据库,用于存储网站、网站上的 url 和每个网站的 url 模式;网站知道他被分配到的Db,url知道网站id;
因为我有 2 GB / DB 限制,所以我需要辅助 DB。
我从http://www.yiiframework.com/wiki/123/multiple-database-support-in-yii/中阅读了所有内容以及 Google 可以找到的内容,并且没有一个完整的示例使用 dinamicaly 连接;
因此,每次我的应用程序扫描一个网站时,找到的每个 url 都会插入到主数据库中,也会插入到已分配给该 url 所属网站的数据库中。
及时,主数据库中的数据被删除,但在辅助数据库中仍然可用。
因此,只有 HOT 信息存储在主数据库中,但它们仍保存在辅助数据库中
Yii 人给出了这个例子,但我需要一个参数,从 1 到 N,N=1->infinite,以便切换到正确的 DB。
class MyActiveRecord extends CActiveRecord {
...
private static $dbadvert = null;
protected static function getAdvertDbConnection()
{
if (self::$dbadvert !== null)
return self::$dbadvert;
else
{
self::$dbadvert = Yii::app()->dbadvert;
if (self::$dbadvert instanceof CDbConnection)
{
self::$dbadvert->setActive(true);
return self::$dbadvert;
}
else
throw new CDbException(Yii::t('yii','Active Record requires a "db" CDbConnection application component.'));
}
}
...
$dbadvert 需要动态,这是我的问题。
此外,辅助数据库中的表并不完全相同,因为我不需要所有表中的所有字段,并且一些表也被删除,所以我需要一个模型;
我能写的模型,不难,我只是删除一些字段;
这就是我现在拥有的,只是插入,在一个特定的数据库中,db1 aka linkbookco1
$command = Yii::app()->db1->createCommand("INSERT INTO `url` (
`id` ,
`website_id` ,
`link` ,
`name` ,
`created` ,
`instance_scanner_id` ,
`status`
)
VALUES (
NULL , '".($model_url->website_id)."', '".($model_url->link)."', '".($model_url->name)."', '".($model_url->created)."', '".($model_url->instance_scanner_id)."', '".($model_url->status)."'
);
");
$command->query();
db1 and it's params are mentioned in the config file, as the yii developers say;