7 Star 18 Fork 9

FloatX / YII sharded ext

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

YII 分库分表扩展

优化数据库连接,减少数据库连接次数及必连主库的限制,优化 实例化AR类、使用 Yii::app()->db->createCommand() 时连接数据库的操作

查询缓存方案,缓存sql中得SHOW语句,减少数据库查询次数

配置

<?php
// 配置: protected/config/main.php

'components'=>array(
    'db'=>array(
		'class'=>'CDbConnectionExt_v3',
		'connectionString' => 'mysql:host=127.0.0.1;dbname=dbname;',
		'slaves'=>array(
			array('connectionString'=>'mysql:host=127.0.0.1;dbname=dbname;charset=utf8;', 'username'=>'test', 'password'=>'test'),
		),
		'emulatePrepare' => true,
        'waitSession' => 15,
		'username' => 'test',
		'password' => 'test',
		'charset' => 'utf8',
	),

    'dbConnectionManager' => require(dirname(__FILE__).'/dbManager.php'),
)

/**
 * 添加: protected/config/dbManager.php
 * 参考 test/dbManager.php
 */

/**
 * 示例: test/User.php
 * 具体的model 使用gii工具生成,模版在 gii目录,
 * sharded 分库分表 model 对应的模版
 * sharded_normal 为普通model 模版
 */
?>

使用

<?php

// 根据uid进行分库分表
$uid = 10;
$model = UserContact::model($uid); // 覆盖了原有参数,改为传人分库分表所依据的值
$data = $model->findAll();

$data = $model->dbConnection->createCommand()
 ->select("*")
 ->from($model->tableName())
 ->where('uid>1')
 ->limit(10)
 ->queryAll();

$db = Yii::app()->dbConnectionManager->sharded($uid); // 调用sharded方法 设置库和表
$data = $db->createCommand()
 ->select("*")
 ->from('user_contact_'.$db->shardedTableKey)
 ->where('uid>1')
 ->limit(10)
 ->queryAll();

空文件

简介

YII 分库分表扩展,支持自定义的库表拆分方式,支持主从库配置 展开 收起
PHP
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
PHP
1
https://gitee.com/664712890/YII-sharded-ext.git
git@gitee.com:664712890/YII-sharded-ext.git
664712890
YII-sharded-ext
YII sharded ext
master

搜索帮助

14c37bed 8189591 565d56ea 8189591