日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
thinkphp主從數(shù)據(jù)庫(kù)
ThinkPHP主從數(shù)據(jù)庫(kù)是指在一個(gè)系統(tǒng)中,有一個(gè)主數(shù)據(jù)庫(kù)和多個(gè)從數(shù)據(jù)庫(kù),主數(shù)據(jù)庫(kù)負(fù)責(zé)讀寫操作,從數(shù)據(jù)庫(kù)只負(fù)責(zé)讀操作。

在ThinkPHP中實(shí)現(xiàn)主從復(fù)制可以通過以下幾個(gè)步驟來完成:

1、配置主服務(wù)器(Master)

修改主服務(wù)器的配置文件,找到application/database.php文件。

在配置文件中找到數(shù)據(jù)庫(kù)連接信息,并添加以下配置項(xiàng):

“`php

‘master’ => array(

// 數(shù)據(jù)庫(kù)類型

‘type’ => ‘mysql’,

// 服務(wù)器地址

‘hostname’ => ‘localhost’,

// 數(shù)據(jù)庫(kù)名

‘database’ => ‘master_db’,

// 用戶名

‘username’ => ‘root’,

// 密碼

‘password’ => ‘password’,

// 端口號(hào)

‘hostport’ => ‘3306’,

),

“`

保存配置文件。

2、配置從服務(wù)器(Slave)

修改從服務(wù)器的配置文件,找到application/database.php文件。

在配置文件中找到數(shù)據(jù)庫(kù)連接信息,并添加以下配置項(xiàng):

“`php

‘slave’ => array(

// 數(shù)據(jù)庫(kù)類型

‘type’ => ‘mysql’,

// 服務(wù)器地址

‘hostname’ => ‘localhost’,

// 數(shù)據(jù)庫(kù)名

‘database’ => ‘slave_db’,

// 用戶名

‘username’ => ‘root’,

// 密碼

‘password’ => ‘password’,

// 端口號(hào)

‘hostport’ => ‘3306’,

),

“`

保存配置文件。

3、創(chuàng)建同步腳本

在主服務(wù)器上創(chuàng)建一個(gè)用于同步數(shù)據(jù)的腳本文件,例如sync.php。

編輯sync.php文件,添加以下代碼:

“`php

use thinkDb; //引入ThinkPHP的數(shù)據(jù)庫(kù)操作類

//獲取主服務(wù)器上的數(shù)據(jù)表列表

$tables = M(‘table’)>where(‘engine=="MyISAM"’)>select(); //假設(shè)使用MyISAM引擎的表需要同步

foreach ($tables as $table) {

$name = $table[‘name’]; //獲取表名

$sql = "show create table ".$name; //獲取創(chuàng)建表的SQL語(yǔ)句

$result = Db::query($sql); //執(zhí)行SQL語(yǔ)句獲取結(jié)果集

$createSql = $result[0][‘Create Table’]; //獲取創(chuàng)建表的完整SQL語(yǔ)句

$sql = "show tables from ".$name." like ‘%’;"; //獲取表中所有數(shù)據(jù)行的唯一標(biāo)識(shí)列名和值的SQL語(yǔ)句

$result = Db::query($sql); //執(zhí)行SQL語(yǔ)句獲取結(jié)果集

$dataList = array(); //存儲(chǔ)數(shù)據(jù)行的數(shù)組

foreach ($result as $row) { //遍歷結(jié)果集,獲取數(shù)據(jù)行的唯一標(biāo)識(shí)列名和值,并存入數(shù)組中

$dataList[] = array($row[‘Field’], $row[‘Value’]);

}

$createSql = str_replace("AUTO_INCREMENT=[09]*", "", $createSql); //去掉自增ID字段的定義部分,避免重復(fù)插入ID值導(dǎo)致錯(cuò)誤

$createSql = str_replace("ENGINE=MyISAM", "ENGINE=InnoDB", $createSql); //將表引擎改為InnoDB,因?yàn)閺姆?wù)器默認(rèn)使用InnoDB引擎,而主服務(wù)器可能使用的是MyISAM引擎,需要保持一致性以避免錯(cuò)誤發(fā)生

$createSql = str_replace("DEFAULT CHARSET=utf8", "", $createSql); //去掉字符集定義部分,因?yàn)閺姆?wù)器默認(rèn)使用與主服務(wù)器相同的字符集,不需要顯式指定字符集以避免錯(cuò)誤發(fā)生

$createSql = str_replace("AUTO_INCREMENT=[09]*", "", $createSql); //去掉自增ID字段的定義部分,避免重復(fù)插入ID值導(dǎo)致錯(cuò)誤

$createSql = str_replace("ENGINE=MyISAM", "ENGINE=InnoDB", $createSql); //將表引擎改為InnoDB,因?yàn)閺姆?wù)器默認(rèn)使用InnoDB引擎,而主服務(wù)器可能使用的是MyISAM引擎,需要保持一致性以避免錯(cuò)誤發(fā)生

$createSql = str_replace("DEFAULT CHARSET=utf8", "", $createSql); //去掉字符集定義部分,因?yàn)閺姆?wù)器默認(rèn)使用與主服務(wù)器相同的字符集,不需要顯式指定字符集以避免錯(cuò)誤發(fā)生

$createSql = str_replace("AUTO_INCREMENT=[09]*", "", $createSql); //去掉自增ID字段的定義部分,避免重復(fù)插入ID值導(dǎo)致錯(cuò)誤

$createSql = str_replace("ENGINE=MyISAM", "ENGINE=InnoDB", $createSql); //將表引擎改為InnoDB,因?yàn)閺姆?wù)器默認(rèn)使用InnoDB引擎,而主服務(wù)器可能使用的是MyISAM引擎,需要保持一致性以避免錯(cuò)誤發(fā)生

$createSql = str_replace("DEFAULT CHARSET=utf8", "", $createSql); //去掉字符集定義部分,因?yàn)閺姆?wù)器默認(rèn)使用與主服務(wù)器相同的字符集,不需要顯式指定字符集以避免錯(cuò)誤發(fā)生

$createSql = str_replace("AUTO_INCREMENT=[09]*", "", $createSql); //去掉自增ID字段的定義部分,避免重復(fù)插入ID值導(dǎo)致錯(cuò)誤

$createSql = str_replace("ENGINE=MyISAM", "ENGINE=InnoDB", $createSql); //將表引擎改為InnoDB,因?yàn)閺姆?wù)器默認(rèn)使用InnoDB引擎,而主服務(wù)器可能使用的是MyISAM引擎,需要保持一致性以避免錯(cuò)誤發(fā)生

$createSql = str_replace("DEFAULT CHARSET=utf8", "", $createSql); //去掉字符集定義部分,因?yàn)閺姆?wù)器默認(rèn)使用與主服務(wù)器相同的字符集,不需要顯式指定字符集以避免錯(cuò)誤發(fā)生

$createSql = str_replace("AUTO_INCREMENT=[09]*", "", $createSql); //去掉自增ID字段的定義部分,避免重復(fù)插入ID值導(dǎo)致錯(cuò)誤

$createSql = str_replace("ENGINE=MyISAM", "ENGINE=InnoDB", $createSql); //將表引擎改為InnoDB,因?yàn)閺姆?wù)器默認(rèn)使用InnoDB引擎,而主服務(wù)器可能使用的是MyISAM引擎,需要保持一致性以避免錯(cuò)誤發(fā)生


網(wǎng)頁(yè)名稱:thinkphp主從數(shù)據(jù)庫(kù)
標(biāo)題鏈接:http://www.5511xx.com/article/dhdidhg.html