欧美三区四区_av先锋影音资源站_亚洲第一论坛sis_影音先锋2020色资源网_亚洲精品社区_在线免费观看av网站_国产一区二区伦理_亚洲欧美视频一区二区_99视频精品全部免费在线_精精国产xxxx视频在线

解析PHP實現的Mysql讀寫分離_PHP教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:淺談PHP企業級應用之WebService篇
來段企業級應用吧,主要是講PHP5對webservice的一些實現(以下的程序可以被JAVA,NET,C等正常調用) 國內用PHP寫WebService的真的很少,網上資料也沒多少,公司的項目開發過程中,經歷了不少這方面的東西,寫出來以供大家參考(謝謝老農提供的WSDL和程序文件

PHP實現的Mysql讀寫分離

主要特性:

1 簡單的讀寫分離
2 一個主數據庫,可以添加更多的只讀數據庫
3 讀寫分離但不用擔心某些特性不支持
4 缺點:同時連接兩個數據庫

英文比較爛,也寫幾個字吧

php code for mysql read/write split
feature:
simply rw split
one master,can add more slaves
support all mysql feature
link to the master and slave at the same time

PHP代碼:

mysql_rw_php.class.php

<?php

/****************************************
*** mysql-rw-php version 0.1 @ 2009-4-16
*** code by hqlulu#gmail.com
*** http://www.aslibra.com
*** http://code.google.com/p/mysql-rw-php/
*** code modify from class_mysql.php (uchome)
****************************************/

class mysql_rw_php {

   //查詢個數
   var $querynum = 0;
   //當前操作的數據庫連接
   var $link = null;
   //字符集
   var $charset;
   //當前數據庫
   var $cur_db = '';

   //是否存在有效的只讀數據庫連接
   var $ro_exist = false;
   //只讀數據庫連接
   var $link_ro = null;
   //讀寫數據庫連接
   var $link_rw = null;

   function mysql_rw_php(){
   }

   function connect($dbhost, $dbuser, $dbpw, $dbname = '', $pconnect = 0, $halt = TRUE) {
     if($pconnect) {
       if(!$this->link = @mysql_pconnect($dbhost, $dbuser, $dbpw)) {
         $halt && $this->halt('Can not connect to MySQL server');
       }
     } else {
       if(!$this->link = @mysql_connect($dbhost, $dbuser, $dbpw)) {
         $halt && $this->halt('Can not connect to MySQL server');
       }
     }
    
     //只讀連接失敗
     if(!$this->link && !$halt) return false;
    
     //未初始化rw時,第一個連接作為rw
     if($this->link_rw == null)
       $this->link_rw = $this->link;

     if($this->version() > '4.1') {
       if($this->charset) {
         @mysql_query("SET character_set_connection=$this->charset, character_set_results=$this->charset, character_set_client=binary", $this->link);
       }
       if($this->version() > '5.0.1') {
         @mysql_query("SET sql_mode=''", $this->link);
       }
     }
     if($dbname) {
       $this->select_db($dbname);
     }
   }

   //連接一個只讀的mysql數據庫
   function connect_ro($dbhost, $dbuser, $dbpw, $dbname = '', $pconnect = 0){
     if($this->link_rw == null)
       $this->link_rw = $this->link;
     $this->link = null;
     //不產生halt錯誤
     $this->connect($dbhost, $dbuser, $dbpw, $dbname, $pconnect, false);
     if($this->link){
       //連接成功
       //echo "link ro sussess!<br>";
       $this->ro_exist = true;
       $this->link_ro = $this->link;
       if($this->cur_db){
         //如果已經選擇過數據庫則需要操作一次
         @mysql_select_db($this->cur_db, $this->link_ro);
       }
     }else{
       //連接失敗
       //echo "link ro failed!<br>";
       $this->link = &$this->link_rw;
     }
   }

   //設置一系列只讀數據庫并且連接其中一個
   function set_ro_list($ro_list){
     if(is_array($ro_list)){
       //隨機選擇其中一個
       $link_ro = $ro_list[array_rand($ro_list)];
       $this->connect_ro($link_ro['dbhost'], $link_ro['dbuser'], $link_ro['dbpw']);
     }
   }

   function select_db($dbname) {
     //同時操作兩個數據庫連接
     $this->cur_db = $dbname;
     if($this->ro_exist){
       @mysql_select_db($dbname, $this->link_ro);
     }
     return @mysql_select_db($dbname, $this->link_rw);
   }

   function fetch_array($query, $result_type = MYSQL_ASSOC) {
     return mysql_fetch_array($query, $result_type);
   }

   function fetch_one_array($sql, $type = '') {
     $qr = $this->query($sql, $type);
     return $this->fetch_array($qr);
   }

   function query($sql, $type = '') {
     $this->link = &$this->link_rw;
     //判斷是否select語句
     if($this->ro_exist && preg_match ("/^(\s*)select/i", $sql)){
       $this->link = &$this->link_ro;
     }
     $func = $type == 'UNBUFFERED' && @function_exists('mysql_unbuffered_query') ?
       'mysql_unbuffered_query' : 'mysql_query';
     if(!($query = $func($sql, $this->link)) && $type != 'SILENT') {
       $this->halt('MySQL Query Error', $sql);
     }
     $this->querynum++;
     return $query;
   }

   function affected_rows() {
     return mysql_affected_rows($this->link);
   }

   function error() {
     return (($this->link) ? mysql_error($this->link) : mysql_error());
   }

   function errno() {
     return intval(($this->link) ? mysql_errno($this->link) : mysql_errno());
   }

   function result($query, $row) {
     $query = @mysql_result($query, $row);
     return $query;
   }

   function num_rows($query) {
     $query = mysql_num_rows($query);
     return $query;
   }

   function num_fields($query) {
     return mysql_num_fields($query);
   }

   function free_result($query) {
     return mysql_free_result($query);
   }

   function insert_id() {
     return ($id = mysql_insert_id($this->link)) >= 0 ? $id : $this->result($this->query("SELECT last_insert_id()"), 0);
   }

   function fetch_row($query) {
     $query = mysql_fetch_row($query);
     return $query;
   }

   function fetch_fields($query) {
     return mysql_fetch_field($query);
   }

   function version() {
     return mysql_get_server_info($this->link);
   }

   function close() {
     return mysql_close($this->link);
   }

   function halt($message = '', $sql = '') {
     $dberror = $this->error();
     $dberrno = $this->errno();
     echo "<div style=\"position:absolute;font-size:11px;font-family:verdana,arial;background:#EBEBEB;padding:0.5em;\">
         <b>MySQL Error</b><br>
         <b>Message</b>: $message<br>
         <b>SQL</b>: $sql<br>
         <b>Error</b>: $dberror<br>
         <b>Errno.</b>: $dberrno<br>
         </div>";
     exit();
   }
}

?>



example.php

<?php

/****************************************
*** mysql-rw-php version 0.1 @ 2009-4-16
*** code by hqlulu#gmail.com
*** http://www.aslibra.com
*** http://code.google.com/p/mysql-rw-php/
*** code modify from class_mysql.php (uchome)
****************************************/

require_once('mysql_rw_php.class.php');

//rw info
$db_rw = array(
   'dbhost'=>'www.aslibra.com',
   'dbuser'=>'aslibra',
   'dbpw'=>'www.aslibra.com',
   'dbname'=>'test'
);

$db_ro = array(
   array(
     'dbhost'=>'www.aslibra.com:4306',
     'dbuser'=>'aslibra',
     'dbpw'=>'www.aslibra.com'
   )
);

$DB = new mysql_rw_php;

//connect Master
$DB->connect($db_rw[dbhost], $db_rw[dbuser], $db_rw[dbpw], $db_rw[dbname]);

//Method 1: connect one server
$DB->connect_ro($db_ro[0][dbhost], $db_ro[0][dbuser], $db_ro[0][dbpw]);

//Method 2: connect one server from a list by rand
$DB->set_ro_list($db_ro);

//send to rw
$sql = "insert into a set a='test'";
$DB->query($sql);

//send to ro
$sql = "select * from a";
$qr = $DB->query($sql);
while($row = $DB->fetch_array($qr)){
   echo $row[a];
}
?>


分享:淺談PHP企業級應用之常見緩存技術篇
別每天OO,這個配置怎么改,這段代碼哪錯了,沒勁,好的程序不光是代碼寫的好,整體架構很重要,多了解程序之外的東西,這篇不再單單是程序方面的東西了,會寫到從程序到服務器的設置,會比較多,但個人的經驗有限,知道的就這么多,不知道的我也沒法寫呀,

來源:模板無憂//所屬分類:PHP教程/更新時間:2009-07-08
相關PHP教程
日韩成人综合网站| 黄免费在线观看| 国产成人三级在线播放| 亚洲国产三级| 色综合久久久久久久久久久| 日本精品va在线观看| 一区二区在线播放视频| 国产伦精品一区二区三区免.费 | 人妻av中文系列| 日日噜噜噜噜人人爽亚洲精品| 日韩激情图片| 亚洲国产一二三| 日韩**中文字幕毛片| 亚洲精品国产一区二区三区| 后入内射欧美99二区视频| 日韩一区欧美二区| 精品国产乱码久久久久久老虎| 久久综合中文色婷婷| 伊人在线视频观看| 国内精品久久久久久久影视简单| 亚洲免费观看在线观看| 日产日韩在线亚洲欧美| 欧美69精品久久久久久不卡| 国产综合色在线观看| 成人性色生活片| 色老头一区二区三区| 国产av麻豆mag剧集| 在线观看免费视频一区| 国产精品亚洲欧美| 欧美一级在线观看| 亚洲欧洲一区二区福利| 国产一级做a爱片久久毛片a| 午夜精品久久久久99热蜜桃导演 | 美女国产一区二区三区| 日韩精品视频在线免费观看| 看一级黄色录像| 成人一二三四区| 99精品久久| 日韩一级成人av| 一区二区三区四区五区精品| 天天操夜夜操视频| 99热这里只有精品8| 在线电影欧美成精品| 日本欧美色综合网站免费| 国产一级做a爰片在线看免费| 91亚洲一区| 色88888久久久久久影院野外| 国产一区二区三区四区hd| 国产成人自拍网站| 欧美高清视频在线观看mv| 在线精品观看国产| 免费中文日韩| 久久久久久少妇| 中文在线不卡| 日韩av在线最新| 乱人伦xxxx国语对白| 午夜精品一区二区三| 国产一区二区不卡| 日韩有码片在线观看| 日本爱爱免费视频| 91p九色成人| 久久精品亚洲麻豆av一区二区| 欧美亚洲国产精品| 黄色a一级视频| 先锋影音国产精品| 精品日本高清在线播放 | 亚洲激情图片| 亚洲午夜在线播放| 久久99国产精品尤物| 中文字幕在线视频日韩| 91小视频在线播放| 日韩欧美中文字幕一区二区三区| 一区二区在线免费| 国产三区精品| 国产微拍精品一区| 天堂成人国产精品一区| 在线色欧美三级视频| 中文久久久久久| 亚洲精品一区av| 亚洲已满18点击进入久久| 国产精品久久久久av福利动漫| 精品无码久久久久久久久| 在线成人h网| 亚洲精品www| 久久精品99国产| 国语自产精品视频在线看抢先版结局| 国产精品三级av| 成人午夜影院在线观看| 亚洲精品77777| 人人精品人人爱| www.亚洲一区| 9.1在线观看免费| 中文字幕av一区二区三区人| 欧美在线观看禁18| 久久久久久久香蕉| 欧美黑人巨大xxxxx| 国产精品网站在线播放| 亚洲aa在线观看| 欧美bbbbbbbbbbbb精品| 人人爽香蕉精品| 九九热精品视频| 免费看污黄网站在线观看| 偷偷www综合久久久久久久| 亚洲成人黄色网址| 亚欧在线免费观看| 99re6热只有精品免费观看| 色综合天天综合| 少妇高潮大叫好爽喷水| 神马久久资源| 伊人色综合久久天天人手人婷| 噜噜噜噜噜久久久久久91| 91丨porny丨在线中文 | 日韩视频在线永久播放| 日本三级免费网站| 日本少妇精品亚洲第一区| 欧美午夜精品久久久久久人妖| 图片区小说区区亚洲五月| 亚洲精品911| 国产精品国产三级国产有无不卡| 国产在线精品一区| 国产精品一级视频| 国产亚洲综合色| 国产免费高清一区| 国产精品亚洲欧美在线播放| 久久精品人人做人人爽人人| 69堂成人精品视频免费| 天天天天天天天干| 91伊人久久大香线蕉| 97av影视网在线观看| 亚洲大尺度在线观看| 成人h动漫精品一区二区| 国产欧美日韩亚洲精品| 五月天激情四射| 成人污视频在线观看| 91网站在线免费观看| 中文字幕+乱码+中文乱码www| 99久久精品国产导航| 亚洲一区二区三区久久| 中文字幕日本人妻久久久免费| 久久尤物电影视频在线观看| 粉嫩av一区二区三区免费观看| 亚洲综合精品国产一区二区三区 | 香蕉av福利精品导航| 免费观看中文字幕| 成人国产一区| 在线观看日韩一区| 丁香啪啪综合成人亚洲| 亚洲精品国模| 精品一区电影国产| 欧美bbbbb性bbbbb视频| 国产日韩精品视频一区二区三区| 欧美大片免费看| 国产亚洲精品久久777777| 国产69精品久久777的优势| 91久久国产精品91久久性色| 亚洲无码精品在线观看| 国产精品成人免费在线| 亚洲一区二区四区| 伊人亚洲精品| 日韩欧美专区在线| 日本精品一二三区| 最新国产拍偷乱拍精品| 久久乐国产精品| 亚洲日本韩国在线| 久久精品日产第一区二区三区高清版| 久久综合九色综合网站| 精品无人乱码一区二区三区| 91国产成人在线| 国产免费视频传媒| 91日韩欧美| 欧美日本国产在线| 日韩女优在线观看| 国产调教视频一区| 一区二区三区不卡在线| 亚洲91网站| 日韩福利在线播放| youjizz亚洲女人| 国产在线精品一区二区不卡了| 成人免费午夜电影| 成人毛片视频免费看| 欧美日韩在线免费| 日韩肉感妇bbwbbwbbw| 天天久久综合| 欧美激情一区二区三区在线视频观看| 久久精品视频9| 欧美激情在线一区二区三区| 天天爱天天做天天操| 超碰97久久国产精品牛牛| 日韩福利在线播放| 狂野欧美性猛交| 国产成人精品亚洲午夜麻豆| 久久精品国产综合精品| 国产成人免费| 精品日韩在线观看| 成人性生交大免费看| 极品少妇xxxx精品少妇| 国产美女精品久久久| 成人a在线观看高清电影| 日韩午夜av电影| 精品无码一区二区三区| 国产一区视频在线看| 久久66热这里只有精品| 激情不卡一区二区三区视频在线| 亚洲精品电影久久久| 992在线观看| 99re这里只有精品视频首页| 亚洲视频在线二区| 欧美日韩一区二区三区在线电影| 综合136福利视频在线| 亚洲精品午夜久久久久久久| 中文字幕亚洲一区二区av在线| 无码av天堂一区二区三区| 久久中文视频| 欧日韩不卡在线视频| 国产视频第一页| 91久久精品午夜一区二区| 美女露出粉嫩尿囗让男人桶| 久久国内精品自在自线400部| 久久久福利视频| 在线观看视频一区二区三区 | 国内精品小视频在线观看| 中文字字幕在线中文乱码| 亚洲国产精品一区二区久久恐怖片| 国产精品一区二区羞羞答答| 亚洲一区图片| www久久99| 国产视频网站一区二区三区| 亚洲天堂开心观看| 中文字幕亚洲精品一区| 一级特黄大欧美久久久| 激情五月婷婷基地| 日本不卡免费在线视频| 欧美精品成人一区二区在线观看| 国语一区二区三区| 欧美黑人又粗大| 国产精品一品二区三区的使用体验| 色妹子一区二区| 亚洲永久无码7777kkk| 成人综合婷婷国产精品久久| 午夜探花在线观看| 久久精品久久久| 91精品国产自产在线观看永久| 日韩中文视频| 亚洲石原莉奈一区二区在线观看| 国产超碰人人爽人人做人人爱| 亚洲一区二区欧美| xxxx国产视频| 成人亚洲一区二区一| av影院在线播放| 韩日视频一区| 国产91亚洲精品一区二区三区| 亚洲综合网狠久久| 欧美国产日韩二区| 亚洲卡一卡二卡三| 亚洲精品国偷自产在线99热| 国产午夜小视频| 欧美日韩在线视频首页| 四虎永久免费影院| 国产色一区二区| 亚洲老女人av| 国产乱码精品一区二区三区忘忧草| 黄色www在线观看| 欧美日韩福利| 国产精品乱子乱xxxx| 卡通动漫国产精品| 欧美一区第一页| 韩日精品一区| 日韩亚洲第一页| 国产三级伦理片| 欧美xxxxx牲另类人与| 国产极品美女高潮无套嗷嗷叫酒店| 亚洲.国产.中文慕字在线| 国产在线观看无码免费视频| 日本一区二区高清| 免费在线观看污网站| 成人中文字幕在线| 岳毛多又紧做起爽| 久久国产精品色| 精品无码av无码免费专区| av成人毛片| 神马影院我不卡午夜| 你懂的一区二区| 精品国产一区二区三区久久久久久| 亚洲免费专区| 亚洲a中文字幕| 欧美挤奶吃奶水xxxxx| 国产福利精品av综合导导航| 成人自拍视频| 2019日本中文字幕| 激情中国色综合| 欧美精品999| 中文.日本.精品| 欧美大成色www永久网站婷| 欧美一区二不卡视频| 在线丨暗呦小u女国产精品| 国产黄色片免费| 亚洲欧洲激情在线| av男人天堂网| 亚洲欧美国产精品va在线观看| 91亚洲欧美激情| 日韩黄色av网站| 国产精品视频一区二区三区,| 亚洲精品国产suv| 国产免费久久久| 亚洲欧美第一页| 性一交一乱一色一视频麻豆| 国产一区二区三区在线播放免费观看 | 亚洲精品97久久中文字幕| 日韩一区二区免费电影| 特级毛片www| 日韩欧美国产麻豆| 中文字幕 人妻熟女| 精品美女一区二区| 中文字幕一区2区3区| 日韩国产欧美精品在线| 国产黄色片av| 日韩在线观看高清| 欧美成人精品一区二区男人小说| 欧美成人黄色小视频| 久久久久久久性潮| 欧美中文在线观看国产| 风间由美一区二区av101| 国产精品激情自拍| 免费电影一区二区三区| 懂色一区二区三区av片| 天天做天天爱综合| 先锋影音一区二区三区| 亚洲一区区二区| wwwwww欧美| 国产一区二区伦理| 亚洲欧美激情网| 久久久一区二区三区捆绑**| 韩国三级hd两男一女| 一区二区三区中文字幕电影| 5566中文字幕| 欧美日韩午夜在线视频| 精品国产xxx| 亚洲人成77777在线观看网| 免费av网站在线播放| 欧美日韩成人免费| 精品视频在线观看网站| 91免费高清视频| 91精品婷婷色在线观看| 亚洲日本精品国产第一区| 蜜桃av噜噜一区二区三区小说| 黄色av免费在线播放| 久久精品人人做| 亚洲精品一区二区三区影院忠贞| 色综合天天做天天爱| 日本一区二区免费电影| 亚洲欧洲国产伦综合| 成人在线爆射| 国产精品一区二区久久久久| 欧美日韩一二三四| 亚洲一区二区三区精品视频| 久久99精品国产.久久久久| 久久精品亚洲天堂| 一区二区三区日韩| 久久综合色综合| 日韩激情视频在线播放| 最新欧美色图| 国产精品久久久久免费a∨大胸| 日韩欧美一区二区三区免费看| 亚洲精品永久www嫩草| 国产又黄又大久久| 亚洲av无码久久精品色欲| 亚洲一区二区在线免费看| 日韩毛片在线播放| 亚洲欧美国产日韩中文字幕| 欧美日韩女优| 91精品中文在线| 亚洲激情二区| 女人另类性混交zo| 国产精品情趣视频| 青草影院在线观看| 日韩av在线免费观看一区| 久久人体大尺度| 国产欧美一区二区三区在线| 欧美激情自拍| 日韩欧美视频网站| 欧美高清在线精品一区| 日韩一级片av| 日韩毛片中文字幕| 欧美大片网站| 国产专区一区二区三区| 日本欧美大码aⅴ在线播放| 四虎1515hh.com| 欧美性猛交xxxx免费看漫画| 一区精品在线观看| 欧美激情综合色| 欧美肉体xxxx裸体137大胆| 一区二区三区三区在线| av电影在线观看不卡| 中文字幕第24页| 欧美电影免费提供在线观看| 唐人社导航福利精品| 91色在线观看| 老牛影视一区二区三区| 中文字幕第三区| 欧美中文字幕一区|