PHP로 구현된 Mysqldb 읽기-쓰기 분리 작업 클래스
이 글에서는 주로 PHP로 구현된 mysqldb 읽기-쓰기 분리 연산 클래스를 소개합니다. PHP의 데이터베이스에 대한 읽기-쓰기 분리 연산 구현 기술을 예제 형식으로 분석하고, 캡슐화 클래스의 구체적인 사용법을 알려줍니다. 다음
이 글의 예제는 PHP로 구현된 mysqldb 읽기-쓰기 분리 연산 클래스를 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 자세한 내용은 다음과 같습니다.
/** * php MysqlDB 读写分离类 * ----------------------------------------------------- * $Source: http://code.ilaopo.net/php.class.mysqldb $ * $Author: Bevin Chen $ * $Email: bevin#lifa8.cn $ * $Date: 2009-10-10 $ * ----------------------------------------------------- */ class mysqldb { var $querynum = 0; var $linkr,$linkw,$charset,$pconnect,$dbconfig; function __constructor($dbarray) { $this->mysqldb($dbarray); } function mysqldb($dbarray,$dbcharset='utf8',$pcontent=0) { if(!is_array($dbarray[0])) { echo "数据库参数错误"; return false; } $this->charset = $dbcharset; $this->pconnect = $pconnect; $this->dbconfig['master'] = $dbarray[0]; $dbServerNum = count($dbarray); if($dbServerNum > 1) { /* * 当x=1 时,$dbarray[0]不作slave * 当x=0 时,$dbarray[0]作slave */ $x = 1; $rand = rand($x,$dbServerNum-1); $this->dbconfig['slave'] = $dbarray[$rand]; } else { $this->dbconfig['slave'] = false; } } function connect($dbhost,$dbuser,$dbpw,$dbname) { if($this->pconnect) { $link = @mysql_pconnect($dbhost, $dbuser, $dbpw); } else { $link = @mysql_connect($dbhost, $dbuser, $dbpw, 1); } if($link) { if($this->version($link) > '4.1') { if($this->charset) { @mysql_query("SET character_set_connection=".$this->charset.", character_set_results=".$this->charset.", character_set_client=binary", $link); } if($this->version($link) > '5.0.1') { @mysql_query("SET sql_mode=''", $link); } } if($dbname) { @mysql_select_db($dbname, $link); } //print_r($link); return $link; } else { return false; } } function connectM() { if(!$this->linkw = $this->connect($this->dbconfig['master'][0],$this->dbconfig['master'][1],$this->dbconfig['master'][2],$this->dbconfig['master'][3])) { exit("主数据库连接失败!"); } //echo "<br>##connectM!.<br>"; } function connectS() { if($this->dbconfig['slave']) { if(!$this->linkr = $this->connect($this->dbconfig['slave'][0],$this->dbconfig['slave'][1],$this->dbconfig['slave'][2],$this->dbconfig['slave'][3])) { $this->dbconfig['slave'] = false; $this->connectS(); } //echo "<br>##connectS!.<br>"; } else { if(!$this->linkw) { $this->connectM(); } $this->linkr = $this->linkw; } } // db read function query($sql, $type = '') { if(!$this->linkr) { $this->connectS(); } $func = $type == 'UNBUFFERED' && @function_exists('mysql_unbuffered_query') ? 'mysql_unbuffered_query' : 'mysql_query'; $query = $func($sql, $this->linkr); $this->querynum++; return $query; } function fetch_array($query, $result_type = MYSQL_ASSOC) { return @mysql_fetch_array($query, $result_type); } function fetch_row($query) { $query = mysql_fetch_row($query); return $query; } function fetch_One($sql) { $query = $this->query($sql); return $this->fetch_row($query); } /* 获取分页方法 */ function fetch_page($sql, $pagenum) { $page = intval($_GET['page']); $query = $this->query($sql); $countnum = $this->num_rows($query); $countpage = ceil($countnum/$pagenum); if($page<1) { $page=1; } if($page>$countpage) { $page=$countpage; } $limitstart = ($page-1)*$pagenum; /* 获取数据结果集 */ for ($i=0; $i<($limitstart+$pagenum); $i++) { if($i>=$countnum) { break; } if($i>=$limitstart) { $result[] = $this->fetch_array($query); } else { $this->fetch_array($query); } } /* 生成url */ $url = $_SERVER['QUERY_STRING']; $url = preg_replace("/&?page=[0-9]+/i","",$url); $array['countnum'] = $countnum; $array['countpage'] = $countpage; $array['result'] = $result; $array['page'] = $page; if($page>1) { $array['preurl'] = "?".$url."&page=".($page-1); $array['prepage'] = $page-1; } else { $array['preurl'] = "?".$url."&page=1"; $array['prepage'] = 1; } if($page<$countpage) { $array['nexturl'] = "?".$url."&page=".($page+1); $array['nextpage'] = $page+1; } else { $array['nexturl'] = "?".$url."&page=".$countpage; $array['nextpage'] = $countpage; } $array['firsturl'] = "?".$url."&page=1"; $array['firstpage'] = 1; $array['lasturl'] = "?".$url."&page=".$countpage; $array['lastpage'] = $countpage; $array['nopage'] = "?".$url."&page="; return $array; } // db write function queryw($sql, $type = '') { if(!$this->linkw) { $this->connectM(); } $func = $type == 'UNBUFFERED' && @function_exists('mysql_unbuffered_query') ? 'mysql_unbuffered_query' : 'mysql_query'; $query = $func($sql, $this->linkw); $this->querynum++; return $query; } function update($table,$where,$array) { $whereset = $set = $dot = ''; foreach($array as $key=>$value) { $set .= $dot." `$key`='$value'"; $dot = ','; } $whereset = $dot = ''; foreach($where as $k=>$v) { $whereset .= $dot." `$k`='$v'"; $dot = ' and '; } $sql = "update $table set $set where $whereset"; return $this->queryw($sql); } function insert($table,$array) { $col = $v = $dot = ''; foreach($array as $key=>$value) { $v .= $dot."'$value'"; $col .= $dot."`$key`"; $dot = ','; } $sql = "insert into $table ($col) values ($v)"; if($this->queryw($sql)) { return $this->insert_id(); } else { return false; } } function insert_id() { return ($id = mysql_insert_id($this->linkw)) >= 0 ? $id : $this->result($this->queryw("SELECT last_insert_id()"), 0); } // db other function affected_rows($link) { return mysql_affected_rows($link); } function error($link) { return (($link) ? mysql_error($link) : mysql_error()); } function errno($link) { return intval(($link) ? mysql_errno($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 fetch_fields($query) { return mysql_fetch_field($query); } function version($link) { return mysql_get_server_info($link); } function close($link) { return mysql_close($link); } } /* 测试例子 // * $dbarray[] = array('localhost','bevin','password','test'); * $dbarray[] = array('ilaopo.net','root','password','test'); * $dbarray[] = array('192.168.1.77','cxh','password','test'); * $newdb = new mysqldb($dbarray,'utf8'); * $array = array('name' => date("Y-m-d H:i:s")); * $id = $newdb->insert("test",$array); * $result = $newdb->fetch_page("select * from test order by id desc",'10'); * print_r($result); * $id = $newdb->insert("test",$array); * echo $id; */
위는 이 글의 전체 내용입니다. 모든 분들의 학습에 도움이 되기를 바랍니다.
관련 권장 사항:
Python은 MySQLdb 기본 작업 클래스의 캡슐화를 구현합니다.
Python의 mysqldb 모듈 설치 방법은 Windows에서
위 내용은 PHP로 구현된 Mysqldb 읽기-쓰기 분리 작업 클래스의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PHP 8.4는 상당한 양의 기능 중단 및 제거를 통해 몇 가지 새로운 기능, 보안 개선 및 성능 개선을 제공합니다. 이 가이드에서는 Ubuntu, Debian 또는 해당 파생 제품에서 PHP 8.4를 설치하거나 PHP 8.4로 업그레이드하는 방법을 설명합니다.

CakePHP는 PHP용 오픈 소스 프레임워크입니다. 이는 애플리케이션을 훨씬 쉽게 개발, 배포 및 유지 관리할 수 있도록 하기 위한 것입니다. CakePHP는 강력하고 이해하기 쉬운 MVC와 유사한 아키텍처를 기반으로 합니다. 모델, 뷰 및 컨트롤러 gu

CakePHP에 로그인하는 것은 매우 쉬운 작업입니다. 한 가지 기능만 사용하면 됩니다. cronjob과 같은 백그라운드 프로세스에 대해 오류, 예외, 사용자 활동, 사용자가 취한 조치를 기록할 수 있습니다. CakePHP에 데이터를 기록하는 것은 쉽습니다. log() 함수는 다음과 같습니다.

VS Code라고도 알려진 Visual Studio Code는 모든 주요 운영 체제에서 사용할 수 있는 무료 소스 코드 편집기 또는 통합 개발 환경(IDE)입니다. 다양한 프로그래밍 언어에 대한 대규모 확장 모음을 통해 VS Code는

CakePHP는 오픈 소스 MVC 프레임워크입니다. 이를 통해 애플리케이션 개발, 배포 및 유지 관리가 훨씬 쉬워집니다. CakePHP에는 가장 일반적인 작업의 과부하를 줄이기 위한 여러 라이브러리가 있습니다.
