[php] 다중 DB 서버 와 다중사이트의 관리 프로그램등의 Config 설정 과 라이브러리
로빈아빠
본문
다중 DB 서버 와 다중사이트의 관리 프로그램등의 Config 설정 과 라이브러리
나자바
http://phpadvance.com
제가 1년 정도 사용한 방식입니다.
많은 사이트와 많은 DB 서버로 프로그램 하실때 유용하실겁니다.
소스는 제가 만든 라이브러리와 연동 되어지는 부분입니다..
아래 소스의 fDBSet() 을 참고하시면 됩니다..
나자바 이해를 돕기 위해서 추가 설명을 하겠습니다.
위에 라이브러리는 특별한것은 없습니다..
단지,
$aDB,$aSite 의 설정단계와 실행하는 단계에서의 설정을 들수 있는데요.
응용을 한다면,
예제1) 전체사이트의 결제금액을 구해라[단, 결제 테이블은 동일하다.] 일때,
위와 같은형식으로 처리할 수 있습니다..
많은 사이트의 프로그램 처리가 가능하며,
DB 서버의 이동이 있을시..
위에 부분을 원하는 DB서버로 변경하면 됩니다.
DB1 번서버로 변경했을때
이런부분이 사이트들의 관리상 많이 유용하게 쓰입니다..
나자바
http://phpadvance.com
제가 1년 정도 사용한 방식입니다.
많은 사이트와 많은 DB 서버로 프로그램 하실때 유용하실겁니다.
소스는 제가 만든 라이브러리와 연동 되어지는 부분입니다..
아래 소스의 fDBSet() 을 참고하시면 됩니다..
////////////////////////////////////////////////////////////////////// ### DB Servers Set $aDB["DB1"]["Host"] = "localhost"; $aDB["DB1"]["User"] = "user"; $aDB["DB1"]["Passwd"] = "password"; $aDB["DB2"]["Host"] = "xxx.xxx.xxx.xxx"; $aDB["DB2"]["User"] = "user"; $aDB["DB2"]["Passwd"] = "password"; $aDB["DB3"]["Host"] = "xxx.xxx.xxx.xxx"; $aDB["DB3"]["User"] = "user"; $aDB["DB3"]["Passwd"] = "password"; $aDB["DB4"]["Host"] = "xxx.xxx.xxx.xxx"; $aDB["DB4"]["User"] = "user"; $aDB["DB4"]["Passwd"] = "password"; $aDB["DB5"]["Host"] = "xxx.xxx.xxx.xxx"; $aDB["DB5"]["User"] = "user"; $aDB["DB5"]["Passwd"] = "password"; ### DB Servers Set End ### Site Data Set $aSite[0]["Domain"] = "www.site1.com"; $aSite[0]["DBServer"] = "DB2"; ##Variable Indexing Key $aSite[0]["DB"] = "DBName"; $aSite[0]["Name"] = "SiteName"; $aSite[1]["Domain"] = "www.site2.com"; $aSite[1]["DBServer"] = "DB2"; ##Variable Indexing Key $aSite[1]["DB"] = "DBName"; $aSite[1]["Name"] = "SiteName";
<? ####MySQL DB Query Library ##작성자 : 나자바 ##작성일 : 2003-02 class CMySQLLib{ var $aDB = array( "Host"=>"", "User"=>"", "Passwd"=>"", "DB"=>"" ); function fDBSet(){ global $aDB,$aSite; $this->aDB["Host"] = $aDB[$aSite[0]["DBServer"]]["Host"]; $this->aDB["User"] = $aDB[$aSite[0]["DBServer"]]["User"]; $this->aDB["Passwd"] = $aDB[$aSite[0]["DBServer"]]["Passwd"]; $this->aDB["DB"] = $aSite[0]["DB"]; return true; } function fError($Sql=""){ $Msg = "MySQL ErrorNo : ".mysql_errno(); $Msg .= " <br> MySQL Error Message : ".mysql_error(); $Msg .= "<br>Query String : ".$Sql; $Msg .= "<br>Source Error File : ".basename(__FILE__); $Msg .= "<br>Source Error Line : ".__LINE__; $Msg .= "<br>PHP Error Source File : ".basename($GLOBALS[PHP_SELF]); $Msg .= "<br> <a href='".$GLOBALS[HTTP_REFERER]."'>되돌아가기</a>"; return $Msg; } function fDefaultConnect($Var="Conn"){ $this->fDBSet(); $this->$Var = @mysql_connect($this->aDB["Host"],$this->aDB["User"],$this->aDB["Passwd"]) or die($this->fError()); return @mysql_select_db($this->aDB["DB"]) or die($this->fError()); } function fConnect($Host,$User,$Passwd,$Var="Conn"){ return $this->$Var = mysql_connect($Host,$User,$Passwd); } function fQuery($Sql,$Var="Res",$ConnVar="Conn"){ if(!$this->$ConnVar){$this->fDefaultConnect($ConnVar);} return $this->$Var = mysql_query($Sql) or die($this->fError($Sql)); } function fFetch($Res,$Var="Row"){ return $this->$Var = ($Res) ? mysql_fetch_object($Res) : false; } function fNumRow($Res){ return ($Res ) ? $ResNum = mysql_num_rows($Res) : 0 ; } function fClose($Var="Conn"){ return ($this->$Var) ? mysql_close($this->$Var) : false ; } }// CMySQLLib Class End!! /* 클래스 설명 var $aDB : 기본 DB정보가 들어 갑니다. fDefaultConnect($Var="Conn")에서 기본적으로 사용하는 변수입니다. fDBSet() : Config 파일을 참조하는 인위적인 함수입니다. 기본적으로 2차 배열로 각 DB 서버별로 설정할수 있습니다. fError($Sql="") : 에러 Reporting 입니다. fDefaultConnect($Var="Conn") : 기본적인 연결을 하는 함수 입니다. fQuery($Sql,$Var="Res",$ConnVar="Conn"); 사용했을시 클래스내에 DB연결 결과값이 없을 경우 이 함수가 실행됩니다. fConnect($Host,$User,$Passwd,$Var="Conn") : 사용자 임의 연결 함수 입니다. - $Var = 연결후 결과를 클래스내에 $Var 번지에다 저장됩니다. Ex1) fQuery($Sql,$Var="Res",$ConnVar="Conn"); : mysql_query 를 실행후 $Var 를 클래스 내에 메모리에 저장됩니다. - $Sql = 쿼리문 - $Var = 결과 변수지정 class 내에 메모리 번지생성. - $ConnVar = Connect Variable 클래스 내에 fDefaultConnect($Var="Conn")/fConnect($Host,$User,$Passwd,$Var="Conn") 생성한 변수를 적음 없을경우 default 로 $this->Conn 을 참조 합니다. Ex1)$this->fQuery("select * from ...","ResMember"); Ex2)$this->fQuery("select * from ...","ResMember"); Ex3)$this->fQuery("select * from ...","ResMember","Conn3"); fFetch($Res,$Var="Row"); : mysql_fetch_object 를 실행후 $Var 값으로 리턴 됩니다.. - $Res = 쿼리 후 리턴 된 값입니다. - $Var = 결과값을 기본적으로 클래스 내에 Row 메모리번지에 오브젝트가 저장됩니다. 설정시 설정 번지에 저장함. Ex1)$this->fFetch($this->Res); Ex2)$this->fFetch($this->Res2,"MemberRow"); fNumRow($Res); : mysql_num_rows 를 실행합니다, 쿼리 결과 갯수를 리턴 합니다. - $Res = 쿼리 후 리턴된 값입니다. Ex1) $Num = $this->fNumRow($this->Res); fClose($Var="Conn") : DB 서버를 닫습니다. - $Var = DB 접속한 클래스 내에 Connect 결과 번지 입니다. Ex1) $this->fClose($this->Conn); */ ?>
나자바 이해를 돕기 위해서 추가 설명을 하겠습니다.
위에 라이브러리는 특별한것은 없습니다..
단지,
$aDB,$aSite 의 설정단계와 실행하는 단계에서의 설정을 들수 있는데요.
응용을 한다면,
예제1) 전체사이트의 결제금액을 구해라[단, 결제 테이블은 동일하다.] 일때,
for($i=0; $i<count($aSite); $i++){ @mysql_connect($aDB[$aSite[$i]["DBServer"]]["Host"],$aDB[$aSite[$i]["DBServer"]]["User"],$aDB[$aSite[$i]["DBServer"]]["Passwd"]); ##쿼리 처리 ##꿔리 처리끝 }
위와 같은형식으로 처리할 수 있습니다..
많은 사이트의 프로그램 처리가 가능하며,
DB 서버의 이동이 있을시..
$aSite[0]["DBServer"] = "DB2"; ##Variable Indexing Key
위에 부분을 원하는 DB서버로 변경하면 됩니다.
DB1 번서버로 변경했을때
$aSite[0]["DBServer"] = "DB1"; ##Variable Indexing Key
이런부분이 사이트들의 관리상 많이 유용하게 쓰입니다..
관련링크
댓글목록
등록된 댓글이 없습니다.