테스트 사이트 - 개발 중인 베타 버전입니다

다중db질문입니다. 채택완료

bde6891 10년 전 조회 4,752

현재 그누보드와 카페24에서 제공하는 db

그리고 외부 db를 이용하고나 합니다.

 

내부db에서는 회원가입등 로그인 절차만 밟고

 

외부db에서 게시판에 뿌릴 정보를 다듬어 줄 예정입니다..

 

문제는 다중db연동입니다.

 

common.php에  

http://88240.tistory.com/entry/PHP-%EB%8B%A4%EC%A4%91-DB-%EC%97%B0%EA%B2%B0-%EC%8B%9C-SELECT%EB%AC%B8-%EB%A7%8C%EB%93%A4%EA%B8%B0">http://88240.tistory.com/entry/PHP-%EB%8B%A4%EC%A4%91-DB-%EC%97%B0%EA%B2%B0-%EC%8B%9C-SELECT%EB%AC%B8-%EB%A7%8C%EB%93%A4%EA%B8%B0

이런식으로 해주면 끝나는건지..

 

그누보드 자체에서 또 수정해줄 곳이 있는지..

만약 수정해야한다면 어딜 해야하는지..

게시물을 가져와 list ,view 해줄 예정입니다..

 

신입인 저한텐 불가능할까요?

 

 

아니면 그냥..카페24에서 제공하는 db말고

외부db로 연결하려면

카페24에서 수정하나요

그누보드에 계정정보 입력하나요?

 

댓글을 작성하려면 로그인이 필요합니다.

답변 3개

채택된 답변
+20 포인트
10년 전

/common.php
    $connect_db = sql_connect(G5_MYSQL_HOST, G5_MYSQL_USER, G5_MYSQL_PASSWORD) or die('MySQL Connect Error!!!');
    $select_db  = sql_select_db(G5_MYSQL_DB, $connect_db) or die('MySQL DB Error!!!');

    // mysql connect resource $g5 배열에 저장 - 명랑폐인님 제안
    $g5['connect_db'] = $connect_db;

$g5['connect_db_in'] = $connect_db;

    $connect_db_out = sql_connect(외부 접속) or die('MySQL Connect Error!!!');
    $select_db_out  = sql_select_db(db선택) or die('MySQL DB Error!!!');

$g5['connect_db_out'] = $connect_db_out;


대충 이런 구조의 db접속을 한다고 할 때


$g5['connect_db'] 의 값을 필요에 따라서 내부 리소스인 $g5['connect_db_in'] 나  외부 리소스인 $g5['connect_db_out'] 변경해주면 쉽게 될 것 같습니다.

리스트의 원격  db를 참조하는 부분의 시작점에
$g5['connect_db'] = 외부 리소스를 지정 후 더이상 
$g5['connect_db'] = 내부 리소스로 돌려 놓으면 될 것 같습니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

b
bde6891
10년 전
조금 더 자세히 알 수 있을까요?
만약 이런식으로 연동 후에list를 불러오고자 하면
list에서 내부db에 쿼리를 날리는지 외부db에 쿼리를 날리는지 어떤식으로 수정해주나요?

댓글을 작성하려면 로그인이 필요합니다.

10년 전

 

아래처럼 간단한 방법으로 목록 및 읽기가 가능 한 것 같아요.

하지만 세부적인 자잘한 문제들은 어떻게 발생될지 모르겠군요.

 

/common.php

140라인
$connect_db = sql_connect(G5_MYSQL_HOST, G5_MYSQL_USER, G5_MYSQL_PASSWORD) or die('MySQL Connect Error!!!');
    $select_db  = sql_select_db(G5_MYSQL_DB, $connect_db) or die('MySQL DB Error!!!');



    $connect_db_out = sql_connect("외부서버","유저","패스") or die('MySQL Connect Error!!!');
    $select_db_out  = sql_select_db("jsstudy", $connect_db_out) or die('MySQL DB Error!!!');



    // mysql connect resource $g5 배열에 저장 - 명랑폐인님 제안
    $g5['connect_db'] = $connect_db;

$g5['connect_db_in'] = $connect_db;
$g5['connect_db_out'] = $connect_db_out;


--------------------------------------
/common.php
470라인쯤
       if (isset($wr_id) && $wr_id){
if($bo_table == 'javascript') $g5['connect_db'] = $g5['connect_db_out'];
            $write = sql_fetch(" select * from $write_table where wr_id = '$wr_id' ");
$g5['connect_db'] = $g5['connect_db_in'];
}

---------------------------------------
/bbs/list.php
1라인
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
if($bo_table == 'javascript')
$g5['connect_db'] = $g5['connect_db_out'];

--------------------------------------
/bbs/list.php
끝라인
$g5['connect_db'] = $g5['connect_db_in'];
로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

b
bde6891
10년 전
음... 연동 실패라고 뜨네요.. 한참 로딩을 기다린 후..연동실패 뱉어냅니다 .. 아쉽네여

댓글을 작성하려면 로그인이 필요합니다.

10년 전

일단 답변글은 제가 만약에 그런 상황에 놓였다면 어떻게 해결 할 것인가에 초점을 맞춘거라

실질적인 세부 작업은 

db 에따라 달라 질 듯 합니다.

만약 외부에서 사용하는 부분은 단지 그 게시판 g5_wirte_out 이라고 할 때

외부에서 참조해야 할 부분들은 g5_board_file 정도 일 것 같구요.

내부적으로 out이라는 게시판을 생성하고 필요한 설정을 미리 정의해 놓을 듯합니다.

그리고 /bbs/list.php 에서 

$bo_table == 'out' 일 경우 

db컨넥션 변경 리소스를 할당하여 외부 목록을 출력시키고 마무리되면

컨넥션을 내부로 돌려 놓을 듯 합니다.

 

이런 구조적인 변경을 하게되면 앞으로 그누보드 업데이트 시마다 패치부분만 소스 변경 및 적용을 해야하므로 사실 바람직한 것은 아니라고 봅니다.

 

질문의 답변과는 다르게

외부 db를 클론으로 내부에 업데이트 하시는게 운영상 좋을 듯 합니다.

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

b
bde6891
10년 전
음..
일단
common.php 132라인부터 부면서

//DB추가
$g5['connect_db_in'] = $connect_db;

$connect_db_out = sql_connect("호스트", "db아이디", "비번") or die('MySQL Connect Error!!!');
$select_db_out = sql_select_db("db명", $connect_db_out) or die('MySQL Connect Error!!!');

$g5['connect_db_out'] = $connect_db_out;

이런식으로 추가를 하고..

list.php에 가서 만약 제가 만들어둔 게시판의 테이블명이 out이라 한다면..
list.php 에 어느부분에서 조건을 주나요?
'out'이라는 게시판에서 외부db를 쓰겠다고 신호?를 보내야 하지 않나요?

외부db에서 게시글을 가져와서 보여주기만 하는 정도로만 할 예정이라..
일단 연동이라도 해서 뿌려주고 싶은데..
(죄송합니다. php를 처음 시작하는 신입이라 질문이 너무 많네요..)

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인