亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > 建站經驗 > 正文

ecshop改造讀寫主從數據庫分離

2024-04-25 20:38:22
字體:
來源:轉載
供稿:網友

設置ecshop數據庫服務器分離,讓讀與寫分開 ,可大大加快網站速度。也可更好的優化網站。

data/config.php

<?php

$db_name = "ecshop";

$prefix = "ecs_";

$timezone = "Europe/Berlin";

$cookie_path = "/";

$cookie_domain = "";

$session = "1440";

$_config = array();

//數據庫主服務器設置, 支持多組服務器設置, 當設置多組服務器時, 則會隨機使用某個服務器

$_config['master'][1]['dbhost'] = "192.168.2.175:3306";

$_config['master'][1]['dbname'] = "ecshop";

$_config['master'][1]['dbuser'] = "dragon";

$_config['master'][1]['dbpw'] = "loong";

/*

*$_config['master'][2]['dbhost'] = "";

*...

*/

//數據庫從服務器設置( slave, 只讀 ), 支持多組服務器設置, 當設置多組服務器時, 系統每次隨機使用

$_config['slave'][1]['dbhost'] = "192.168.2.176:3306";

$_config['slave'][1]['dbname'] = "ecshop";

$_config['slave'][1]['dbuser'] = "ivan";

$_config['slave'][1]['dbpw'] = "loong";

$_config['slave'][2]['dbhost'] = "192.168.2.177:3306";

$_config['slave'][2]['dbname'] = "ecshop";

$_config['slave'][2]['dbuser'] = "ivan";

$_config['slave'][2]['dbpw'] = "loong";

define('EC_CHARSET','utf-8');

define('ADMIN_PATH','admin');

define('AUTH_KEY', 'this is a key');

define('OLD_AUTH_KEY', '');

define('API_TIME', '');

?>

初始化數據連接類

/* 初始化數據庫類

* 如果配置了從服務器,則初始化從庫類

*/

if(count($_config['slave'])) {

require(ROOT_PATH . 'includes/cls_mysql_slave.php');

$db = new cls_mysql_slave($_config);

}else{

require(ROOT_PATH . 'includes/cls_mysql.php');

$db = new cls_mysql($_config);

}

增加cls_mysql_slave.php從庫類

<?php

require(ROOT_PATH . 'includes/cls_mysql.php');

class cls_mysql_slave extends cls_mysql

{

var $slaveid = null;

function set_config($config){

if(!empty($this->config['slave'])) {

$this->slaveid = array_rand($this->config['slave']);

}

parent::set_config($config);

}

/* 隨機分配從庫連接 */

function set_slave_config() {

$this->settings = $this->config['slave'][$this->slaveid];

$this->settings['charset'] = $this->config['charset'];

$this->settings['pconnect'] = $this->config['pconnect'];

}

function slave_connect() {

$this->set_slave_config();

$dbhost = $this->settings['dbhost'];

$dbuser = $this->settings['dbuser'];

$dbpw = $this->settings['dbpw'];

$dbname = $this->settings['dbname'];

$this->connect($dbhost, $dbuser, $dbpw, $dbname);

}

function query($sql, $type = '') {

// 如果執行查詢操作,則執行從庫連接

if($this->slaveid && strtoupper(substr($sql, 0 , 6)) == 'SELECT') {

$this->slave_connect();

}else{

parent::set_config($this->config);

$dbhost = $this->settings['dbhost'];

$dbuser = $this->settings['dbuser'];

$dbpw = $this->settings['dbpw'];

$dbname = $this->settings['dbname'];

$this->connect($dbhost, $dbuser, $dbpw, $dbname);

}

return parent::query($sql, $type);

}

/* 刪除失敗連接*/

function del_error_link(){

unset($this->config['slave'][$this->slaveid]);

$this->set_config($this->config);

$this->set_slave_config();

$dbhost = $this->settings['dbhost'];

$dbuser = $this->settings['dbuser'];

$dbpw = $this->settings['dbpw'];

$dbname = $this->settings['dbname'];

$this->connect($dbhost, $dbuser, $dbpw, $dbname);

}

}

cls_mysql.php文件類修改

<?php

if (!defined('IN_ECS'))

{

die('Hacking attempt');

}

class cls_mysql

{

var $link_id = NULL;

var $settings = array();

var $queryCount = 0;

var $linkCount = 0;

var $queryTime = '';

var $queryLog = array();

var $max_cache_time = 300; // 最大的緩存時間,以秒為單位

var $cache_data_dir = 'temp/query_caches/';

var $root_path = '';

var $error_message = array();

var $platform = '';

var $version = '';

var $dbhash = '';

var $starttime = 0;

var $timeline = 0;

var $timezone = 0;

var $mysql_config_cache_file_time = 0;

var $mysql_disable_cache_tables = array(); // 不允許被緩存的表,遇到將不會進行緩存

var $config = array();

function __construct($config, $charset = 'utf8', $pconnect = 0, $quiet = 0)

{

$this->cls_mysql($config, $charset, $pconnect, $quiet);

}

function cls_mysql($config, $charset = 'utf8', $pconnect = 0, $quiet = 0)

{

if(!empty($config)) {

$config['charset'] = $charset;

$config['pconnect'] = $pconnect;

$this->config = $config;

}

if (defined('EC_CHARSET'))

{

$charset = strtolower(str_replace('-', '', EC_CHARSET));

}

if (defined('ROOT_PATH') && !$this->root_path)

{

$this->root_path = ROOT_PATH;

}

$this->set_config($this->config);

if ($quiet)

{

$dbhost = $this->settings['dbhost'];

$dbuser = $this->settings['dbuser'];

$dbpw = $this->settings['dbpw'];

$dbname = $this->settings['dbname'];

$this->connect($dbhost, $dbuser, $dbpw, $dbname, $charset, $pconnect, $quiet);

}

}

//隨機分配數據庫連接

function set_config($config) {

$sid = array_rand($config['master']);

$settings = $config['master'][$sid];

$settings['sid'] = $sid;//www.zuimoban.com

$settings['charset'] = $this->config['charset'];

$settings['pconnect'] = $this->config['pconnect'];

$this->settings = $settings;

}

function connect($dbhost, $dbuser, $dbpw, $dbname = '', $charset = 'utf8', $pconnect = 0, $quiet = 0)

{

if ($pconnect)

{

if (!($this->link_id = @mysql_pconnect($dbhost, $dbuser, $dbpw)))

{

if (!$quiet)

{

$this->ErrorMsg("Can't pConnect MySQL Server!");

}

return false;

}

}

else

{

if (PHP_VERSION >= '4.2')

{

$this->link_id = @mysql_connect($dbhost, $dbuser, $dbpw, true);

}

else

{

$this->link_id = @mysql_connect($dbhost, $dbuser, $dbpw);

mt_srand((double)microtime() * 1000000); // 對 PHP 4.2 以下的版本進行隨機數函數的初始化工作

}

if (!$this->link_id)

{

if (!$quiet)

{

//連接超過10次,中斷連接,拋出錯誤

if($this->linkCount>9){

$this->ErrorMsg("Can't Connect MySQL Server!");

}

$this->linkCount++;

$this->del_error_link();

}

return false;

}

}

$this->dbhash = md5($this->root_path . $dbhost . $dbuser . $dbpw . $dbname);

$this->version = mysql_get_server_info($this->link_id);

/* 如果mysql 版本是 4.1+ 以上,需要對字符集進行初始化 */

if ($this->version > '4.1')

{

if ($charset != 'latin1')

{

mysql_query("SET character_set_connection=$charset, character_set_results=$charset, character_set_client=binary", $this->link_id);

}

if ($this->version > '5.0.1')

{

mysql_query("SET sql_mode=''", $this->link_id);

}

}

$sqlcache_config_file = $this->root_path . $this->cache_data_dir . 'sqlcache_config_file_' . $this->dbhash . '.php';

@include($sqlcache_config_file);

$this->starttime = time();

if ($this->max_cache_time && $this->starttime > $this->mysql_config_cache_file_time + $this->max_cache_time)

{

if ($dbhost != '.')

{

$result = mysql_query("SHOW VARIABLES LIKE 'basedir'", $this->link_id);

$row = mysql_fetch_assoc($result);

if (!empty($row['Value']{1}) && $row['Value']{1} == ':' && !empty($row['Value']{2}) && $row['Value']{2} == "//")

{

$this->platform = 'WINDOWS';

}

else

{

$this->platform = 'OTHER';

}

}

else

{

$this->platform = 'WINDOWS';

}

if ($this->platform == 'OTHER' &&

($dbhost != '.' && strtolower($dbhost) != 'localhost:3306' && $dbhost != '127.0.0.1:3306') ||

(PHP_VERSION >= '5.1' && date_default_timezone_get() == 'UTC'))

{

$result = mysql_query("SELECT UNIX_TIMESTAMP() AS timeline, UNIX_TIMESTAMP('" . date('Y-m-d H:i:s', $this->starttime) . "') AS timezone", $this->link_id);

$row = mysql_fetch_assoc($result);

if ($dbhost != '.' && strtolower($dbhost) != 'localhost:3306' && $dbhost != '127.0.0.1:3306')

{

$this->timeline = $this->starttime - $row['timeline'];

}

if (PHP_VERSION >= '5.1' && date_default_timezone_get() == 'UTC')

{

$this->timezone = $this->starttime - $row['timezone'];

}

}

$content = '<' . "?php/r/n" .

'$this->mysql_config_cache_file_time = ' . $this->starttime . ";/r/n" .

'$this->timeline = ' . $this->timeline . ";/r/n" .

'$this->timezone = ' . $this->timezone . ";/r/n" .

'$this->platform = ' . "'" . $this->platform . "';/r/n?" . '>';

@file_put_contents($sqlcache_config_file, $content);

}

/* 選擇數據庫 */

if ($dbname)

{

if (mysql_select_db($dbname, $this->link_id) === false )

{

if (!$quiet)

{

$this->ErrorMsg("Can't select MySQL database!");

}

return false;

}

else

{

return true;

}

}

else

{

return true;

}

}

......

/* 刪除失敗連接*/

function del_error_link(){

unset($this->config['master'][$this->settings['sid']]);

$this->set_config($this->config);

$dbhost = $this->settings['dbhost'];

$dbuser = $this->settings['dbuser'];

$dbpw = $this->settings['dbpw'];

$dbname = $this->settings['dbname'];

$this->connect($dbhost, $dbuser, $dbpw, $dbname);

}

}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
色噜噜亚洲精品中文字幕| 国产免费观看久久黄| 久久精品一区中文字幕| 一区二区三区久久精品| 92国产精品久久久久首页| 成人午夜黄色影院| 性色av香蕉一区二区| 中文字幕日韩视频| 久久久久久久久电影| 日本精品视频在线| 国产精品亚洲自拍| 91亚洲精品一区二区| 亚洲高清久久网| 国产日韩在线精品av| 久久这里只有精品99| 人人澡人人澡人人看欧美| 欧美贵妇videos办公室| 亚洲欧美日韩中文视频| 亚洲综合在线小说| 不卡中文字幕av| 国产综合在线看| 欧美激情国产高清| 亚洲一区二区在线播放| 日韩精品有码在线观看| 青青久久av北条麻妃海外网| 久久免费成人精品视频| 日韩人体视频一二区| 国产精选久久久久久| 久久视频国产精品免费视频在线| 亚洲成色777777在线观看影院| 国产精品亚洲自拍| 久久成人精品电影| 91久久嫩草影院一区二区| 国产精品黄页免费高清在线观看| 成人福利在线观看| 亚洲精品自拍视频| 日韩av在线一区二区| 国模精品一区二区三区色天香| 精品夜色国产国偷在线| 97香蕉久久夜色精品国产| 久久久999精品免费| 有码中文亚洲精品| 超碰日本道色综合久久综合| 欧美亚洲视频一区二区| 国产视频在线一区二区| 日韩精品在线影院| 人人澡人人澡人人看欧美| 亚洲国产成人av在线| 精品久久久久人成| 日韩欧美在线一区| 国产ts人妖一区二区三区| 久久久精品国产网站| 91国内揄拍国内精品对白| 亚洲精品中文字幕有码专区| 欧美在线观看网址综合| 久久久亚洲福利精品午夜| 国模精品视频一区二区三区| 91视频国产精品| 91免费的视频在线播放| 国产乱肥老妇国产一区二| 日韩美女主播视频| 亚洲国产99精品国自产| 欧美与黑人午夜性猛交久久久| 日韩在线播放一区| 日韩久久精品成人| 久久免费视频在线观看| 欧美成人在线免费| 日韩精品在线视频美女| 国产97在线|亚洲| 日韩一区在线视频| 久久精品成人欧美大片古装| 国产一区二区三区视频| 亚洲精品国产精品国自产在线| 精品女厕一区二区三区| 中日韩午夜理伦电影免费| 精品国产老师黑色丝袜高跟鞋| 日韩av成人在线观看| 亚洲成人网在线| 国产亚洲精品久久久久久777| 久久久久久亚洲| 久久久久一本一区二区青青蜜月| 日韩在线观看免费全集电视剧网站| 国产精品午夜一区二区欲梦| 68精品国产免费久久久久久婷婷| 亚洲最大的网站| 日韩免费av在线| 亚洲国产精品久久久久秋霞不卡| 久久精品一偷一偷国产| 亚洲午夜小视频| 久久伊人精品天天| 久久在线视频在线| 国产精品电影久久久久电影网| 日本精品久久电影| 日韩av影院在线观看| 国产在线98福利播放视频| 国产成人精品亚洲精品| 欧美性69xxxx肥| 国产精品一二三视频| 久久久久久国产三级电影| 久久久久在线观看| 欧美日韩在线另类| 国产精品jizz在线观看麻豆| 日韩欧美国产骚| 国产v综合v亚洲欧美久久| 亚洲精品美女在线| 亚洲精品国产欧美| 日韩精品视频免费专区在线播放| 精品少妇v888av| 久久久亚洲欧洲日产国码aⅴ| 亚洲国产中文字幕在线观看| 亚洲最大福利视频网站| 亚洲美女精品成人在线视频| 成人黄色av免费在线观看| 55夜色66夜色国产精品视频| 亚洲图片制服诱惑| 国产精品丝袜久久久久久不卡| 日韩精品免费视频| 川上优av一区二区线观看| 原创国产精品91| 国产午夜精品视频免费不卡69堂| 成人性生交大片免费观看嘿嘿视频| www国产亚洲精品久久网站| 久久的精品视频| 亚洲国产一区二区三区四区| 欧美亚洲日本网站| 亚洲精品成人久久| 亚洲性av在线| 久久久综合免费视频| 国产精品r级在线| 日韩精品视频在线免费观看| www.色综合| 美女啪啪无遮挡免费久久网站| 5252色成人免费视频| 国产精品午夜国产小视频| 亚洲天堂av综合网| 日韩经典第一页| 欧美成人精品xxx| 成人激情黄色网| 国产精品久久久久一区二区| 欧美电影在线播放| 国产精品一区二区三区久久久| 26uuu久久噜噜噜噜| 97精品欧美一区二区三区| 国产精品成久久久久三级| 91极品女神在线| 精品激情国产视频| 久久精品一偷一偷国产| 国产精品爽爽ⅴa在线观看| 亚洲免费av片| 亚洲一区中文字幕在线观看| 久久综合免费视频影院| 韩国精品美女www爽爽爽视频| 91国产在线精品| 日韩在线视频观看正片免费网站| 久久成人这里只有精品| 国产高清在线不卡| 精品国产一区二区三区久久久狼| 欧美午夜女人视频在线| 中文字幕av一区| 久久久久久久国产精品| 国精产品一区一区三区有限在线| 欧美在线观看日本一区| 日韩免费在线看| 91久久久久久|