php框架CodeIgniter主从数据库配置方法分析


Posted in PHP onMay 25, 2018

本文实例讲述了php框架CodeIgniter主从数据库配置方法。分享给大家供大家参考,具体如下:

CodeIgniter简称CI是最流行的一个php MVC框架之一,本人讲从实际项目使用中写系列实战经验,有别与其他的理论讲解文章,会附上实战流程和代码。

本篇为配置多个数据库,使用场景为集群,分布式,数据库读写分离,多台主从互备只有一台为读写数据库,其他为只读数据库。

工具/环境:

php开发环境
CodeIgniter

方法/步骤:

在config/database.php 里面配置多一个数据库源,default为默认的可以是localhost也可以是IP,writedb为可读写的数据库,由于写的为主从互备的需要用IP远程调用,本人配置为:

$active_group = 'default';
$active_record = TRUE;
$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'default_username';
$db['default']['password'] = 'default_password';
$db['default']['database'] = 'default_dbname';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = FALSE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;
$db['writedb']['hostname'] = '202.187.194.160';
$db['writedb']['username'] = 'writedb_name';
$db['writedb']['password'] = 'writedb_password';
$db['writedb']['database'] = 'writedb_db';
$db['writedb']['dbdriver'] = 'mysql';
$db['writedb']['dbprefix'] = '';
$db['writedb']['pconnect'] = TRUE;
$db['writedb']['db_debug'] = TRUE;
$db['writedb']['cache_on'] = FALSE;
$db['writedb']['cachedir'] = '';
$db['writedb']['char_set'] = 'utf8';
$db['writedb']['char_names'] = 'utf8';
$db['writedb']['dbcollat'] = 'utf8_general_ci';
$db['writedb']['swap_pre'] = '';
$db['writedb']['autoinit'] = TRUE;
$db['writedb']['stricton'] = FALSE;

M(Model)需要用到的Model配置两个数据源进来,只需要读的配置一个就可以了,当然如果是只写的也可以单独配置写的一个。

本人一个问题反馈的实例feedbackmodel.php:

<?php
class Feedbackmodel extends CI_Model {
function __construct() {
parent::__construct ();
$this->db = $this->load->database ('default',true);
$this->writedb = $this->load->database ('writedb',true);
}
public function add($data)
{
$this->writedb->insert('feedback',$data);
if($this->writedb->affected_rows() == 1){
return true;
}
return false ;
}
}
?>

C(Controller)控制器的调用跟普通的一样,只要引入Model就可以了,本人实例:

<?php 
class Feedback extends CI_Controller {
function __construct(){
parent::__construct();
}
function index(){
$this->load->model('feedbackmodel'); 
$this->load->helper('url'); 
$data['name'] = "feedback";
$this->load->view('feedbackview',$data);
}
}
?>

注意事项:

① 由于写的为主从互备的需要用IP远程调用

② default为默认的可以是localhost也可以是IP

希望本文所述对大家基于CodeIgniter框架的PHP程序设计有所帮助。

PHP 相关文章推荐
提升PHP执行速度全攻略(下)
Oct 09 PHP
php单件模式结合命令链模式使用说明
Sep 07 PHP
PHP取进制余数函数代码
Jan 19 PHP
深入mysql_fetch_row()与mysql_fetch_array()的区别详解
Jun 05 PHP
关于PHP二进制流 逐bit的低位在前算法(详解)
Jun 13 PHP
PHP获取文件扩展名的4种方法
Nov 24 PHP
PHP扩展迁移为PHP7扩展兼容性问题记录
Feb 15 PHP
ZendFramework框架实现连接两个或多个数据库的方法
Dec 08 PHP
ThinkPHP删除栏目(实现批量删除栏目)
Jun 21 PHP
微信公众号开发之获取位置信息php代码
Jun 13 PHP
解决PHP curl或file_get_contents下载图片损坏或无法打开的问题
Oct 11 PHP
windows系统php环境安装swoole具体步骤
Mar 04 PHP
CodeIgniter框架数据库基本操作示例
May 24 #PHP
PHP实现生成数据字典功能示例
May 24 #PHP
tp框架(thinkPHP)实现三次登陆密码错误之后锁定账号功能示例
May 24 #PHP
PHP实现防止表单重复提交功能【基于token验证】
May 24 #PHP
PHP实现微信小程序人脸识别刷脸登录功能
May 24 #PHP
ThinkPHP框架实现的MySQL数据库备份功能示例
May 24 #PHP
CI框架(CodeIgniter)实现的导入、导出数据操作示例
May 24 #PHP
You might like
php 设计模式之 工厂模式
2008/12/19 PHP
PHP封装分页函数实现文本分页和数字分页
2014/10/23 PHP
php正则修正符用法实例详解
2016/12/29 PHP
php中请求url的五种方法总结
2017/07/13 PHP
网络图片延迟加载实现代码 超越jquery控件
2010/03/27 Javascript
扩展jquery实现客户端表格的分页、排序功能代码
2011/03/16 Javascript
TextArea不支持maxlength的解决办法(jquery)
2011/09/13 Javascript
ASP.NET jQuery 实例10 动态修改hyperlink的URL值
2012/02/03 Javascript
从面试题学习Javascript 面向对象(创建对象)
2012/03/30 Javascript
浏览器加载、渲染和解析过程黑箱简析
2012/11/29 Javascript
jQuery 快速结束当前正在执行的动画
2013/11/20 Javascript
javascript写的异步加载js文件函数(支持数组传参)
2014/06/07 Javascript
javascript Array 数组常用方法
2015/04/05 Javascript
javascript手风琴下拉菜单实现代码
2015/11/12 Javascript
常见JS验证脚本汇总
2015/12/01 Javascript
vue.js初学入门教程(1)
2016/11/03 Javascript
jQuery模拟实现的select点击选择效果【附demo源码下载】
2016/11/09 Javascript
jQuery实现ToolTip元素定位显示功能示例
2016/11/23 Javascript
Web前端开发之水印、图片验证码
2016/11/27 Javascript
jQuery插件echarts去掉垂直网格线用法示例
2017/03/03 Javascript
JS简单实现点击跳转登陆邮箱功能的方法
2017/10/31 Javascript
解决axios会发送两次请求,有个OPTIONS请求的问题
2018/10/25 Javascript
JavaScript实现电灯开关小案例
2020/03/30 Javascript
解决Antd Table表头加Icon和气泡提示的坑
2020/11/17 Javascript
python计算N天之后日期的方法
2015/03/31 Python
浅谈python和C语言混编的几种方式(推荐)
2017/09/27 Python
python实战教程之自动扫雷
2018/07/13 Python
python selenium执行所有测试用例并生成报告的方法
2019/02/13 Python
对pyqt5多线程正确的开启姿势详解
2019/06/14 Python
python怎么判断模块安装完成
2020/06/19 Python
建筑安全责任书范本
2014/07/24 职场文书
教师师德师风整改措施
2014/10/24 职场文书
中学教师师德师风承诺书
2015/04/28 职场文书
2015领导干部廉洁自律工作总结
2015/07/23 职场文书
2016年共产党员公开承诺书
2016/03/24 职场文书