Laravel 数据库读写分离
2016-09-19 11:01
381 查看
config/database.php
... 'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', 'localhost'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, 'engine' => null, ], /* test master/slave */ 'laravel_test_ms'=>array( 'read'=>array( 'host' => '10.0.13.46', 'username' => 'laravel_reader', 'password' => 'qwerqwer123', ), 'write'=>array( 'host' => '10.0.13.46', 'username' => 'laravel_writer', 'password' => '1qaz1qaz123', ), 'driver' => 'mysql', 'database' => 'laravel', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, 'engine' => null, ), /* 多数据库连接-读写分离-手动 */ 'laravel_reader'=>array( 'driver' => 'mysql', 'host' => '10.0.13.46', 'database' => 'laravel', 'username' => 'laravel_reader', 'password' => 'qwerqwer123', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, 'engine' => null, ), 'laravel_writer'=>array( 'driver' => 'mysql', 'host' => '10.0.13.46', 'database' => 'laravel', 'username' => 'laravel_writer', 'password' => '1qaz1qaz123', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, 'engine' => null, ), ...
app/Http/routes.php
Route::get('tongji/info', 'TongjiController@info'); Route::get('tongji/multi', 'TongjiController@multi'); Route::get('tongji/ms', 'TongjiController@ms');
app/Http/Controllers/TongjiController.php
<?php namespace App\Http\Controllers; use App\Tongji; class TongjiController extends Controller { /** * 多数据库连接-读写分离-手动 * @access public * @author zhaoyingnan 2016-09-18 17:05 * @return mix * @note **/ public function multi() { return Tongji::mMultiDBConfTest(2); } /** * 框架自动读写分离 * @access public * @author zhaoyingnan 2016-09-18 17:53 * @param int $iVar * @return mix * @note **/ public function ms() { return Tongji::mMasterSlaveTest(1); } } ?>
app/Tongji.php
<?php namespace App; use Illuminate\Database\Eloquent\Model; #use Illuminate\Support\Facades\DB; use DB; class Tongji extends Model { /** * 1.读写分离-多数据库连接(database.php)-手动 * @access public * @author zhaoyingnan 2016-09-18 17:00 * @param int $iType * @return mix * @note **/ static function mMultiDBConfTest($iType = 1) { # 数据库权限设置 # grant select on laravel.* to laravel_reader@'%' identified by 'qwerqwer123'; # grant select,insert,update,delete on laravel.* to laravel_writer@'%' identified by '1qaz1qaz123'; # flush privileges; if($iType == 1) { # reader return DB::connection('laravel_reader')->select('select * from student limit 1'); } else { # writer return DB::connection('laravel_writer')->update('update student set `age`=:age where id=:id', array('age'=>22, 'id'=>1)); } } /** * 2.读写分离-框架自动 * @access public * @author zhaoyingnan 2016-09-18 17:41 * @param int $iType * @return mix * @note **/ static function mMasterSlaveTest($iType = 1) { if($iType == 1) { # reader return DB::connection('laravel_test_ms')->select('select * from student limit 1'); } else { # writer return DB::connection('laravel_test_ms')->update('update student set `age`=:age where id=:id', array('age'=>20, 'id'=>3)); } } } ?>
相关文章推荐
- laravel实现数据库多库配置,读写分离配置或者多读写分离配置
- Laravel数据库读写分离配置
- laravel数据库读写分离配置
- laravel实现数据库读写分离配置或者多读写分离配置
- laravel5.2 DB数据库 读写分离
- Amoeba数据库代理 实现mysql读写分离
- Yii框架数据库多数据库、主从、读写分离
- [转]数据库的读写分离技术
- amoeba数据库中间件透明实现MYSQL读写分离
- laravel 中使用tinker注入数据到数据库
- Laravel数据库基础
- 为什么数据库读写分离可以提高性能以及mysql实现读写分离
- Spring 实现数据库读写分离
- Laravel课程表的数据库设计与实现
- laravel中数据库操作的问题
- laravel5.2数据库基本操作
- Laravel中连接多个数据库
- Spring 实现数据库读写分离的示例
- laravel中将session由文件保存改为数据库保存