묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
[질문] 제로보드 dbConn()에서 if문 왜쓰는지 매우 궁금합니다.
2006.01.15 01:47
제로보드 dbConn()에서 if문 왜쓰는지 매우 궁금합니다.
제로보드의 DB 연결 함수
####################################################################
파일명 : lib.php
####################################################################
function dbconn() {
global $connect, $HOST, $USER, $PASS, $DATABASE;
if(!$connect) {
$connect = @mysql_connect($HOST,$USER,$PASS)
or Error("DB 접속시 에러가 발생했습니다");
}
@mysql_select_db($DATABASE, $connect)
or Error("DB Select 에러가 발생했습니다","");
return $connect;
}
#####################################################################
예제-1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
<?
$connect = dbConn();
?>
예제-2 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
<?
if(!$connect) $connect = dbConn();
?>
예제1과 예제2의 차이가 도대체 뭔지 모르겠습니다.
어차피 데이터베이스 하나 쓴다고 보았을때요.. if문 안붙여도 되지 않나요?
테스트 해보니까 되던데요..
왜 if문을 썼는지 이해를 못하겠습니다.
별 차이가 없다면 if문을 빼는것이 속도가 더 빠르지 않을까요?
클래스를 쓴다면 몰라도요..
ps. 질문이 하나 더 있습니다. ㅡㅡ;
#############################################################
<?php
$x = mysql_connect( 'localhost', 'root', 'root' );
$y = mysql_connect( 'localhost', 'root', 'root' );
mysql_close($x);
mysql_close($y); // 이미 닫힘
?>
여기서 보면 $x, $y에 각각 연결 했는데, true 옵숀을 안주면 $x = $y 라고 하는데..
그러면 도대체 두번째 $y는 안열고(메모리 할당 안하고) 그냥 리턴하는지 아니면..
메모리 할당해서 DB를 열고 리턴해 줄려다가 보니까 $x가 있어서
그냥 $x를 리턴해 주는지..
궁금합니다. ㅡㅡ;
꼬옥 좀 알려주세요.
제로보드의 DB 연결 함수
####################################################################
파일명 : lib.php
####################################################################
function dbconn() {
global $connect, $HOST, $USER, $PASS, $DATABASE;
if(!$connect) {
$connect = @mysql_connect($HOST,$USER,$PASS)
or Error("DB 접속시 에러가 발생했습니다");
}
@mysql_select_db($DATABASE, $connect)
or Error("DB Select 에러가 발생했습니다","");
return $connect;
}
#####################################################################
예제-1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
<?
$connect = dbConn();
?>
예제-2 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
<?
if(!$connect) $connect = dbConn();
?>
예제1과 예제2의 차이가 도대체 뭔지 모르겠습니다.
어차피 데이터베이스 하나 쓴다고 보았을때요.. if문 안붙여도 되지 않나요?
테스트 해보니까 되던데요..
왜 if문을 썼는지 이해를 못하겠습니다.
별 차이가 없다면 if문을 빼는것이 속도가 더 빠르지 않을까요?
클래스를 쓴다면 몰라도요..
ps. 질문이 하나 더 있습니다. ㅡㅡ;
#############################################################
<?php
$x = mysql_connect( 'localhost', 'root', 'root' );
$y = mysql_connect( 'localhost', 'root', 'root' );
mysql_close($x);
mysql_close($y); // 이미 닫힘
?>
여기서 보면 $x, $y에 각각 연결 했는데, true 옵숀을 안주면 $x = $y 라고 하는데..
그러면 도대체 두번째 $y는 안열고(메모리 할당 안하고) 그냥 리턴하는지 아니면..
메모리 할당해서 DB를 열고 리턴해 줄려다가 보니까 $x가 있어서
그냥 $x를 리턴해 주는지..
궁금합니다. ㅡㅡ;
꼬옥 좀 알려주세요.
댓글 2
-
에지
2006.01.15 18:33
-
이경훈
2006.01.15 20:42
에지님 감사합니다. 그런데요..
function dbconn() {
global $connect, $HOST, $USER, $PASS, $DATABASE;
if(!$connect) {
$connect = @mysql_connect($HOST,$USER,$PASS)
or Error("DB 접속시 에러가 발생했습니다");
}
@mysql_select_db($DATABASE, $connect)
or Error("DB Select 에러가 발생했습니다","");
return $connect;
}
dbConn() 함수 안쪽에서도 비교하는데 굳이 비교해야 하는지가 매우 궁금한겁니다.
한번 만 좀 봐주주세요 ^^
첫번째 질문에 대한 답변입니다.
if(!$connect) $connect = dbconn();
이라는 구문을 해석하자면,
$connect가 없으면 $connect에 dbconn()함수를 적용시켜라... 정도이려나요?
dbconn() 함수를 적용시키려면 아주 잠깐이나마 시간이 필요합니다.
그런데 이미 $connect 변수에 dbconn()함수가 적용되어 있다면 어떨까요?
굳이 다시 dbconn()함수를 적용해줄 필요가 없겠지요. 이미 있는 $connect를 쓰면 될테니까요.
따라서 if(!$connect) 부분은, 이전에 $connect에 dbconn()함수를 적용시켰다면,
다시 또 적용시켜 불필요한 시간을 잡아먹는 행위를 방지하기 위해 삽입되었다고 생각됩니다.
지워도 크게 무리가 되지는 않습니다만, zero님은 이런 미묘한 시간 잡아먹기도 고려하신 듯 하네요 ^^;