훌륭한 데이터베이스를 개발하시고 공개해 주셔서 항상 감사합니다.
기존에 큐브리드 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);
}
?>
결과화면
테스트 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);
?>
결과 화면
*** 예상되는 오류의 발생 원인.
- 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 에 해당하는 소스도 여러번 새로 고침을 하면 간혹 에러 없이 정상적인 결과를 출력하기도 함.
오류 발생원인에 대한 답변 부탁드리겠습니다.
감사합니다.