다중 DB 서버 와 다중사이트의 관리 프로그램등의 Config 설정 과 라이브러리
페이지 정보
작성자 MintState 댓글 0건 조회 14,929회 작성일 08-11-03 10:21본문
다중 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
이런부분이 사이트들의 관리상 많이 유용하게 쓰입니다..
|
|
댓글목록
등록된 댓글이 없습니다.





다중 DB 서버 와 다중사이트의 관리 프로그램등의 Config 설정 과 라이브러리