php框架CodeIgniter主從數據庫配置方法分析
本文實例講述了php框架CodeIgniter主從數據庫配置方法。分享給大家供大家參考,具體如下:
CodeIgniter簡稱CI是最流行的一個php MVC框架之一,本人講從實際項目使用中寫系列實戰(zhàn)經驗,有別與其他的理論講解文章,會附上實戰(zhàn)流程和代碼。
本篇為配置多個數據庫,使用場景為集群,分布式,數據庫讀寫分離,多臺主從互備只有一臺為讀寫數據庫,其他為只讀數據庫。
工具/環(huán)境:
php開發(fā)環(huán)境
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相關內容感興趣的讀者可查看本站專題:《codeigniter入門教程》、《CI(CodeIgniter)框架進階教程》、《php優(yōu)秀開發(fā)框架總結》、《ThinkPHP入門教程》、《ThinkPHP常用方法總結》、《Zend FrameWork框架入門教程》、《php面向對象程序設計入門教程》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》
希望本文所述對大家基于CodeIgniter框架的PHP程序設計有所幫助。
相關文章
Zend Framework入門教程之Zend_Session會話操作詳解
這篇文章主要介紹了Zend Framework入門教程之Zend_Session會話操作,結合實例形式詳細分析了Zend_Session會話操作的具體使用技巧,需要的朋友可以參考下2016-12-12
關于 Laravel Redis 多個進程同時取隊列問題詳解
這篇文章主要給大家介紹了關于 Laravel Redis 多個進程同時取隊列問題的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或工作具有一定的參考學習價值,需要的朋友下面來一起學習學習吧。2017-12-12

