欧美三区四区_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教程
亚洲人成在线观看| 懂色av中文字幕一区二区三区| 午夜伊人狠狠久久| 136fldh精品导航福利| 免费激情视频在线观看| 91好色先生tv| 一本色道久久| 欧美日韩免费一区二区三区| 豆国产97在线| 国产aⅴ激情无码久久久无码| 日日夜夜亚洲精品| 成人av电影在线网| 这里只有精品在线播放| 国产尤物av一区二区三区| 久久久久久不卡| 91精品秘密在线观看| 婷婷综合久久一区二区三区| 国产欧美一区二区三区视频| 中文字幕精品视频在线| 日韩国产91| 91香蕉国产在线观看软件| 日韩在线欧美在线| 欧美韩国日本在线| 精品久久久久中文慕人妻| 青青草精品视频| 欧美精品一区二区三区很污很色的| 亚洲国产精品久久人人爱| 亚洲精品在线观看网站| 伊甸园精品99久久久久久| 欧美不卡视频在线观看| 欧美一区亚洲| 欧美日韩视频不卡| 免费精品视频一区二区三区| 麻豆成人在线视频| 91欧美在线| 欧美亚洲丝袜传媒另类| 久久久久久国产精品一区| 青青草手机视频在线观看| 欧美色图一区| 色999日韩国产欧美一区二区| 不卡视频一区二区| 成年人一级黄色片| 日韩欧美中文| 欧美综合欧美视频| 欧美精品尤物在线| 日本特级黄色片| 国产午夜精品一区二区三区欧美| 日韩精品综合一本久道在线视频| 亚洲开发第一视频在线播放| 波多野结衣一区二区三区在线| 一本综合精品| 亚洲精品国产精品国自产观看浪潮| 狠狠干视频网站| 国产农村妇女毛片精品久久| 久久99久久久久久久久久久| 最近2019中文字幕一页二页 | 国产精品毛片无遮挡高清| 欧美中文字幕视频在线观看| 伊人久久一区二区三区| 激情小说亚洲图片| 五月天精品一区二区三区| 国产成人女人毛片视频在线| 美女视频黄免费| 狠狠噜噜久久| 国产日韩影视精品| 精品亚洲porn| 亚洲成人久久久久| 久草视频这里只有精品| 成人小说亚洲一区二区三区| va亚洲va日韩不卡在线观看| 国模精品视频一区二区三区| 无码任你躁久久久久久老妇| 天天躁日日躁狠狠躁欧美| 色哟哟亚洲精品| 婷婷久久五月天| 亚洲系列在线观看| 国产福利不卡视频| 午夜精品久久久久久久99黑人| 国产激情第一页| 国产99久久| 在线电影院国产精品| 欧美黄色免费网址| 二区三区不卡| 中文字幕一区二区三区不卡在线 | 亚洲影视在线播放| 国产麻豆日韩| 精人妻无码一区二区三区| 精品一区二区三区免费| 欧美人与物videos| aa片在线观看视频在线播放| 日本一本不卡| 精品国产乱码久久久久久久| 激情综合在线观看| 欧美一级在线| 亚洲电影一区二区三区| 久久影院理伦片| 一级片在线免费观看视频| 国产91在线|亚洲| 欧洲精品久久久| 五月综合色婷婷| 亚洲作爱视频| www国产亚洲精品久久网站| 极品白嫩少妇无套内谢| 国产一区二区三区日韩精品| 欧美一级免费大片| 成人免费aaa| **国产精品| 欧美日韩亚洲成人| 一区二区免费在线视频| 天天操天天干天天爱| 最好看的中文字幕久久| 九色91视频| 99热在线只有精品| 久久精品日韩一区二区三区| 99国产视频| 丰满熟女人妻一区二区三| zzijzzij亚洲日本少妇熟睡| 国产精品欧美风情| 九九热在线免费观看| 国产伦精品一区二区三区免费迷| 欧美一区二区三区图| 久久中文免费视频| 青青草精品视频| 5566日本婷婷色中文字幕97| 免费在线观看h片| 美女视频黄 久久| 欧美在线视频免费观看| 九九热精品免费视频| 久久成人羞羞网站| 日本精品久久久久久久| 国产真实乱偷精品视频| 国产一区二区0| 国产精品视频午夜| 久久人人爽人人爽人人片av免费| 成人亚洲一区二区一| 91免费的视频在线播放| 中日精品一色哟哟| 久久精品夜夜夜夜久久| 久久精品国产一区二区三区日韩| 北条麻妃一二三区| 亚洲黄色片在线观看| 一区二区欧美日韩| 亚洲精品三区| 欧美日韩一区二区三区不卡| 亚洲性生活网站| 精品国产一区二区三区小蝌蚪 | 日韩精品xxxx| 国产精品xxx在线观看| 欧美一区二区福利在线| 图片区乱熟图片区亚洲| 亚洲国产一区二区三区在线播放 | 日韩中文字幕免费在线观看| 一区二区三区中文字幕在线观看| 手机看片日韩国产| 国产美女视频一区二区| 欧美一区二区三区在线看| 国产成人美女视频| 亚洲一区二区三区| 欧美成人四级hd版| 午夜免费激情视频| 国产91色综合久久免费分享| 国产成人精品福利一区二区三区| 国产黄色av片| 亚洲不卡av一区二区三区| 欧美精品久久久久久久免费| 网友自拍一区| 亚洲天堂视频在线观看| 黑人と日本人の交わりビデオ| 久久狠狠亚洲综合| 亚洲伊人久久综合| 亚洲欧美强伦一区二区| 欧美日韩亚洲高清| 中国黄色片免费看| 欧美日韩国产在线一区| 国内精久久久久久久久久人| 中文字幕视频网| 中文一区二区完整视频在线观看| 一本久道久久综合狠狠爱亚洲精品| 成人97精品毛片免费看| 欧美sm极限捆绑bd| 精品人妻少妇嫩草av无码| 毛片av中文字幕一区二区| www.一区二区三区| 午夜时刻免费入口| 福利一区视频| 色88888久久久久久影院野外| 簧片在线免费看| 影音先锋日韩在线| 欧美亚洲国产视频| 亚洲一区二区人妻| 午夜亚洲国产au精品一区二区| 青青在线视频观看| 99久久婷婷国产综合精品电影√| 欧美精品18videos性欧美| 亚洲天堂视频网站| 亚洲人成人一区二区在线观看| 欧美一级视频免费看| 成人一区二区| 久久久久久久久久久免费 | 一二三四区精品视频| 1024av视频| 午夜精品毛片| 欧美做爰性生交视频| 国产精品欧美久久久久天天影视| 好吊成人免视频| www.51色.com| 日韩精品国产精品| 国产精品久久久久久久久久久久午夜片| 成人va天堂| 亚洲国产欧美在线成人app| 天天色天天综合| 久久久精品影视| 97免费视频观看| 国产精品久久天天影视| 欧美自拍大量在线观看| 亚洲精品国产精品国| 精品污污网站免费看| 国产中文字幕一区二区| 高清视频一区二区| 中文字幕av日韩精品| 九一国产精品| 亚州精品天堂中文字幕| 国产视频aaa| 欧美日韩国产片| 一级性生活大片| 播五月开心婷婷综合| 真人做人试看60分钟免费| 91综合视频| 国产精品久久久久99| 亚洲欧美日韩精品永久在线| 日韩欧美精品三级| 亚洲一级生活片| 国产精品国产三级国产aⅴ入口| aaaaaa亚洲| 美女视频一区免费观看| 久久精品一二三区| 猫咪成人在线观看| 久久人人爽人人爽人人片av高请 | 91麻豆国产视频| 在线观看网站黄不卡| 18禁裸乳无遮挡啪啪无码免费| 99久久99久久久精品齐齐| 国产精品va在线观看无码| 午夜精品久久久久99热蜜桃导演 | 在线播放亚洲精品| 欧美视频第二页| 美国黑人一级大黄| 国产午夜精品一区二区三区嫩草| 欧美色图另类小说| 久久久久久久高潮| 欧美日韩国产一二| 国产探花一区二区| 欧美性xxxx在线播放| 国产日韩亚洲精品| 波多野结衣一区二区三区免费视频| 久久久国产精品亚洲一区| 国产又黄又猛又爽| 91精品国产麻豆| 欧美激情图片小说| 一区二区三区欧美久久| 国产清纯白嫩初高中在线观看性色| 国产.欧美.日韩| 日本熟妇人妻xxxx| 亚洲激情自拍| 欧美国产一二三区| 成人一区二区| 91香蕉电影院| 国产精品久久久久久久久久白浆 | 亚洲人精品一区| 日本人dh亚洲人ⅹxx| aa级大片欧美| 欧美精品成人网| 国内外成人在线| 岛国大片在线播放| 久久综合中文| 精品国产三级a∨在线| 精品二区视频| 欧美日韩在线一区二区三区| 99久久精品费精品国产| 成人自拍视频网站| 精品一区亚洲| 亚洲xxxxx| 日本久久成人网| 国产精品自拍网| 国产精品调教| 国产精品www| 日本一区二区三区播放| 97在线观看免费| 欧美aaaaaa| 午夜精品www| 成人性片免费| 久久久久久中文| 成人在线不卡| 97国产精品久久| 色综合一区二区日本韩国亚洲| 欧美黑人国产人伦爽爽爽| 欧美福利在线播放| 九九精品视频在线| 粉嫩av一区二区三区四区五区| 欧美激情第1页| а√天堂资源国产精品| 欧美精品videosex极品1| 玖玖精品在线| 秋霞成人午夜鲁丝一区二区三区| 精品中文在线| 国产成人福利网站| 大桥未久女教师av一区二区| 国产精品老牛影院在线观看| 欧美三级午夜理伦三级在线观看| 成人黄色午夜影院| 伊人久久大香线蕉综合网蜜芽| 亚洲影院色在线观看免费| 精品一区二区三区的国产在线观看| 粉嫩av一区二区三区免费观看| 99久久精品费精品国产风间由美| 欧美色欧美亚洲另类七区| 亚洲一级高清| 在线精品日韩| 日韩国产精品久久久久久亚洲| 国产自产在线视频| 国产老肥熟一区二区三区| 美女在线视频一区二区| 久久久亚洲精品一区二区三区| 亚洲av无码专区在线播放中文| 亚洲欧洲精品一区二区三区| 日韩欧美黄色网址| 日本乱人伦一区| 亚洲免费在线观看av| 亚洲国产成人av在线| 亚洲精品国产精品国| 欧美激情按摩在线| 88久久精品| 91成人在线看| 欧美一区二区三区久久精品| 中文字幕av日韩精品| 看国产成人h片视频| jizz18女人| 国产精品沙发午睡系列990531| 亚洲国产av一区| 欧美性猛交xxxx偷拍洗澡| 在线观看亚洲欧美| 日韩av一区二区在线| 性xxxx视频播放免费| 2020国产精品视频| 亚洲瘦老头同性70tv| 精品视频在线观看| 国产日韩欧美三级| 国产伦精品一区二区三区四区视频_ | 国产成人涩涩涩视频在线观看| 日韩超碰人人爽人人做人人添| 国产精品区一区二区三含羞草| 影音先锋亚洲一区| 免费看欧美一级片| 成+人+亚洲+综合天堂| 国产人妻黑人一区二区三区| 亚洲成av人片一区二区三区| 日本熟女一区二区| 日韩av在线不卡| 美女网站视频一区| 国产精品美乳在线观看| 香蕉视频官网在线观看日本一区二区| 一区二区三区电影| 粉嫩高潮美女一区二区三区| 99精品一区二区三区无码吞精| 精品人伦一区二区三区蜜桃网站 | 亚洲同性同志一二三专区| 51精品免费网站| 精品精品欲导航| 亚洲日本香蕉视频| 国产精品男人的天堂| 欧美久久久久| 久久久久久久午夜| 国产色一区二区| 久久精品亚洲a| 亚洲国产天堂久久国产91 | 国产精品女主播av| 久久中文免费视频| 日韩av一区在线观看| 久久免费影院| 成人av片网址| 久久久久久久波多野高潮日日| www.这里只有精品| 亚洲自拍与偷拍| 国产主播第一页| 九九久久久久久久久激情| 小嫩嫩12欧美| 婷婷视频在线播放| 99精品一区二区三区| 林心如三级全黄裸体| 337p日本欧洲亚洲大胆色噜噜| 午夜精品成人av| 91在线网站视频| 麻豆久久精品| 亚洲午夜精品在线观看| 一本到三区不卡视频| 99久久精品国产一区色| 国产91在线高潮白浆在线观看| 一区二区影视| 狠狠操精品视频| 午夜伊人狠狠久久|