| 제목 | db연결이 사용도중 자꾸 끊였다가 연결되었다 반복하는 이유가 무엇일까요? | ||
|---|---|---|---|
| 카테고리 | CI 2, 3 | ||
| 글쓴이 | 정수리 | 작성시각 | 2018/12/10 17:49:06 |
|
|
|||
|
포럼에서 여러 많은 분들께서 도움을 주셔서
다행히 오라클db에 연동에 성공하였습니다.
db에서 데이터를 읽어오는 작업을 하면
한번씩
Unable to connect to your database server using the provided settings.
연결관련 에러가 뜨더라구요;;
저게 계속 뜨는게 아니구요 한번씩 발생합니다;
class Test_model extends CI_Model{
public $continfo;
function __construct()
{
parent::__construct();
$this->continfo = $this->load->database($this->continfoSet(), TRUE);
}
function getSub($params='')
{
$sql = 'SELECT LOW_SUB_CTRT_FLD_NM as subType, CTRT_YMD as subDate, LOW_SUB_CTRT_CTRT_AMT as subMoney, LOW_SUB_CTRT_RATE as subPercent, ENTP_NM as subCompany, REPREVE_NM AS subCEO FROM V_TCM_SUBCTRT_LINK where CTRT_ACCT_BOOK_MNG_NO = ?';
$query = $this->continfo->query($sql, $params);
$this->continfo->close();
return $query->result_array();
}
function continfoSet()
{
$config['hostname'] = CONTINFO_IP;
$config['username'] = '아이디';
$config['password'] = '패스워드';
$config['database'] = 'db명';
$config['dbdriver'] = 'oci8';
$config['dbprefix'] = '';
$config['pconnect'] = TRUE;
$config['db_debug'] = TRUE;
$config['cache_on'] = FALSE;
$config['cachedir'] = '';
$config['char_set'] = 'utf8';
$config['dbcollat'] = 'utf8_general_ci';
$config['swap_pre'] = '';
$config['autoinit'] = TRUE;
$config['stricton'] = FALSE;
$config['port'] = CONTINFO_PORT;
return $config;
}
}
연결후에 셀렉트해온후 강제로 db연결을 끊는 과정인데
왜 저런 에러가 중간에 발생하는것일까요??
어디부터 살펴봐야 힌트를 얻을수있을까요??;; |
|||
| 다음글 | ci3 파일세션 질문 드립니다. (1) | ||
| 이전글 | HTTP2 를 ubuntu에 적용했습니다 (1) | ||
|
변종원(웅파)
/
2018/12/10 18:02:50 /
추천
0
close는 왜 하시는지 궁금하네요?
|
|
kaido
/
2018/12/10 18:38:48 /
추천
0
예상되는 패턴은 connect pool 로 호출 하고나서 중간에 colse 해놓고는 다시 connect pool obj 로 접속 call 을 불렀을것 같네요. close 한게 문제 될것 같으며, oracle 은 접속 유지를 해야만 하는 db 입니다.
var_dump($this); 해당 명령어로 CI에서 담고 있는 모든 obj 를 확인 가능합니다. SQL 호출 부분과 close 부분 으로 나눠서 DB 관련 obj 체크해보시면 무언가 다른것을 보실것 입니다.
pconnect 로 호출 하면 DB obj 형태로 떠놓고는 query 실행 할때마다 새로 접속 하지 않고 기존 obj로 접속 합니다. 레퍼런스로 호출해도 그렇습니다. 중간에 이유없이 강제로 close 하셨다면 다시 connect 하는 부분이 필요할 것입니다. |
|
정수리
/
2018/12/11 08:59:16 /
추천
0
@변종원 이전에 다른 프로그램을 만들 때 프로그램이 늦어 지는 부분이 있어 서버팀에서 확인해보니 db에서 리소스가 남아있어서 느려진다고하여 close를 해주니 속도가 느려지는 현상이 사라져 close를 사용하게 되었습니다. 오라클의 경우 주 db가 아니며 특정에 대해 한번씩 조회하기에 사용이후 close 강제로 연결을 끊었습니다. |
|
정수리
/
2018/12/11 09:19:03 /
추천
0
@kaido 답변감사합니다. 말씀하신대로 호출 이후에 var_dump($this) close() var_dump($this)비교해보니
//호출 이후
[pconnect] => 1
[conn_id] => Resource id #44
[result_id] => 1
[db_debug] => 1
[benchmark] => 0.023853063583374
[query_count] => 1
[bind_marker] => ?
[save_queries] => 1
[queries] => Array
(
[0] => select A.CTRT_ACCT_BOOK_MNG_NO as col005, A.CTRT_NM as col006, B.SUPERV_USER_NM as col020, B.SUPERV_DEPT_CD, C.DEPT_NM as col002 from V_TCM_SUMMARYLIST A JOIN V_TCM_CTRTSUPERV_LINK B ON A.CTRT_ACCT_BOOK_MNG_NO = B.CTRT_ACCT_BOOK_MNG_NO JOIN V_TCM_DEPT_LINK C ON B.SUPERV_DEPT_CD = C.DEPT_CD where A.CTRT_NM like '%tt%'
)
//close이후
[pconnect] => 1
[conn_id] =>
[result_id] => 1
[db_debug] => 1
[benchmark] => 0.023853063583374
[query_count] => 1
[bind_marker] => ?
[save_queries] => 1
[queries] => Array
(
[0] => select A.CTRT_ACCT_BOOK_MNG_NO as col005, A.CTRT_NM as col006, B.SUPERV_USER_NM as col020, B.SUPERV_DEPT_CD, C.DEPT_NM as col002 from V_TCM_SUMMARYLIST A JOIN V_TCM_CTRTSUPERV_LINK B ON A.CTRT_ACCT_BOOK_MNG_NO = B.CTRT_ACCT_BOOK_MNG_NO JOIN V_TCM_DEPT_LINK C ON B.SUPERV_DEPT_CD = C.DEPT_CD where A.CTRT_NM like '%tt%'
)
conn_id 부분에서 다르더라구요. 두개 모두 쿼리문에 있는데 close이후의 경우 conn_id부분에 아무것도 없다보니 연결이 안되었다는 에러가 출력되는 것일까요? close부분을 주석처리 한 후 테스트를 해보아도 원인은 똑같이 발생합니다. |
|
kaido
/
2018/12/11 09:24:31 /
추천
0
네 그렇습니다 실행한 쿼리에 대해서 재차 다시 실행을 하기 위해서 이전에 실행한 쿼리 오브젝트는 남겨두고 close 때 커넥션을 날려버립니다. [정확히는 DATA OBJ 전체 입니다.] CI 내에서 캐시 쿼리 처리 하기 위해 남겨두는것 입니다. [DB의 캐싱 하고는 다른것 입니다.] 가령 $sql = $this->db->query( select * from TEST ); $sql2 = $this->db->query( select * from TEST ); 2번 DB에 접속 해서 데이터를 가져올까요? 아닙니다. [queries] 1번 쿼리와 동일한게 있다고 판단하면 1번 쿼리를 그대로 다시 사용합니다. |
|
정수리
/
2018/12/11 10:10:21 /
추천
0
@kaido 답변감사합니다. 아직 제가 부족한 부분이 많아서 그런지 올려주신 답변에 대해 정확히 이해 하기가 어렵네요 ㅜㅜ 현재 서버를 재시작 후 테스트 해보니 에러 메세지는 출력되지 않네요...
|