php - cubird 연결 부분 오류 문제 문의 드립니다.

by 김우람 posted May 19, 2011

훌륭한 데이터베이스를 개발하시고 공개해 주셔서 항상 감사합니다.
기존에 큐브리드 2.1 버전을 이용하여 서비스를 하다가 버전업의 필요성을 느껴 신규 버전을 테스트 하는 중
문의사항이 발생하여 질문 올립니다.



*** 테스트에 사용된 서버

* WEB 서버 (IP:114.207.246.20)
- windows 2003 R2 32bit Service Pack 2
- IIS 6.0
- php : php-5.2.17-Win32-VC6-x86.msi
- cubrid module : CUBRID-8.3.1-WIN32-PHP-5.2.X-VC6-TS
- cubrid server : CUBRID-Windows-x86-8.3.1.1002.exe



* DB 서버 (IP:114.207.246.21)
- windows 2008 R2 64bit Service Pack 1
- cubrid server : CUBRID-Windows-x64-8.3.1.1002.exe




*** 테스트 시나리오.

* 독립된 두대의 물리적인 서버를 각각 web, db 전용 서버로 설정한 후  web, db 서버 연동을 위한 테스트 진행




*** 발견된 문제점.

* test.php 내에서 php 내장함수인 "include" 함수를 이용하여 데이터베이스 연결이 정의된 파일(dcconn.php)을 불러 온 후 cubrid 함수를 실행하면 오류가 생김.
- "include" 함수를 이용하지 않고 파일 내에 데이터베이스 연결을 정의해 놓으면 오류가 발생하지 않음.





*** 문제의 화면

테스트 1. 정상적으로 진행되는 화면. (include 함수 사용 안함.)

--- test.php 소스 ---
<?

$cubrid_host = "114.207.246.21";
$cubrid_port = "35000";
$cubrid_db = "demodb";
$cubrid_user = "digipop";
$cubrid_pass = "1234";
$con_db = cubrid_connect($cubrid_host, $cubrid_port, $cubrid_db, $cubrid_user, $cubrid_pass);


// 위의 내용과 같은 정보를 포함한 파일.
//include "dbconn.php"; 주석 처리됨.

// 화면에 변수 표시.
echo "cubrid_host : $cubrid_host <br>";
echo "cubrid_port : $cubrid_port <br>";
echo "cubrid_db : $cubrid_db <br>";
echo "cubrid_user : $cubrid_user <br>";
echo "cubrid_pass : $cubrid_pass <br>";
echo "con_db : $con_db <br>";


// 데모디비를 위한 테스트 소스.
if($con_db) {
   $req = cubrid_execute($con_db, "select * from olympic");
   if($req) {
       while ($row = cubrid_fetch($req)) {
       echo $row["host_city"];
        echo "<br/>";
       }
       cubrid_close_request($req);
   }
   cubrid_disconnect($con_db);
}
?>

결과화면
itsok.png



테스트 2. 오류가 생긴 화면. (include 함수 사용함.)

--- test.php 소스 ---
<?
/* 주석처리 시작
$cubrid_host = "114.207.246.21";
$cubrid_port = "35000";
$cubrid_db = "demodb";
$cubrid_user = "digipop";
$cubrid_pass = "1234";
$con_db = cubrid_connect($cubrid_host, $cubrid_port, $cubrid_db, $cubrid_user, $cubrid_pass);
*/ 주석처리 끝

// 위의 내용과 같은 정보를 포함한 파일.
include "dbconn.php";

// 화면에 변수 표시.
echo "cubrid_host : $cubrid_host <br>";
echo "cubrid_port : $cubrid_port <br>";
echo "cubrid_db : $cubrid_db <br>";
echo "cubrid_user : $cubrid_user <br>";
echo "cubrid_pass : $cubrid_pass <br>";
echo "con_db : $con_db <br>";


// 데모디비를 위한 테스트 소스.
if($con_db) {
   $req = cubrid_execute($con_db, "select * from olympic");
   if($req) {
       while ($row = cubrid_fetch($req)) {
       echo $row["host_city"];
        echo "<br/>";
       }
       cubrid_close_request($req);
   }
   cubrid_disconnect($con_db);
}
?>

--- include 된 dbconn.php 소스 ---
<?
$cubrid_host = "114.207.246.21";
$cubrid_port = "35000";
$cubrid_db = "demodb";
$cubrid_user = "digipop";
$cubrid_pass = "1234";

$con_db = cubrid_connect($cubrid_host, $cubrid_port, $cubrid_db, $cubrid_user, $cubrid_pass);
?>


결과 화면
error.png



*** 예상되는 오류의 발생 원인.

- web, db 서버가 서로 운영체제 및 큐브리드 서버 비트가 달라서 오류가 생김.
 : 의심됨.
- "CUBRID-8.3.1-WIN32-PHP-5.2.X-VC6-TS" 큐브리드 모듈의 오류.
 : 의심됨.
- "CUBRID-Windows-x86-8.3.1" 서버 내에서의 설정 문제.
 : 특별히 설정을 건드린것 없이 기본으로 사용중이지만 이것도 의심.
- php 5.2.17-Win32-VC6-x86 버전의 오류.
 : "include"된 파일의 변수 값이 화면에 정상적으로 표시되는것으로 보아 원인이 아닌듯함.
- 서버간의 통신 불안정.
 : 이것 역시 원인이 아닌듯함.



*** 그 외 문제점.

- 테스트 2 에 해당하는 소스도 여러번 새로 고침을 하면 간혹 에러 없이 정상적인 결과를 출력하기도 함.





오류 발생원인에 대한 답변 부탁드리겠습니다.
감사합니다.




Articles

6 7 8 9 10 11 12 13 14 15