이스킨 질문좀드려요 > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

이스킨 질문좀드려요 정보

이스킨 질문좀드려요

본문

오류가 나는곳의 주소를 알려주시면 더 빠르고 정확하게 답변 받을 수 있습니다.

오류 주소 :

제가 지금 게시글 검색속도가 무지하게 느린데요
join문으로 변경 하려다가 잘되지 않아서요..
혹시 게시판 스킨때문에 느릴수도잇는건가요?
소스 첨부합니다





---------------------------------------------------------------------------------------
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가

// 선택옵션으로 인해 셀합치기가 가변적으로 변함
$colspan = 5;

//if ($is_category) $colspan++;
if ($is_checkbox) $colspan++;
if ($is_good) $colspan++;
if ($is_nogood) $colspan++;

?>

<style>
.board_top { clear:both; }

.board_list { clear:both; width:100%; table-layout:fixed; margin:5px 0 0 0; }
.board_list th { font-weight:bold; font-size:12px; }
.board_list th { background:url(<?=$board_skin_path?>/img/title_bg.gif) repeat-x; }
.board_list th { white-space:nowrap; height:34px; overflow:hidden; text-align:center; }
.board_list th { border-top:1px solid #ddd; border-bottom:1px solid #ddd; }

.board_list tr.bg0 { background-color:#fafafa; }
.board_list tr.bg1 { background-color:#ffffff; }

.board_list td { padding:.5em; }
.board_list td { border-bottom:1px solid #ddd; }
.board_list td.num { color:#999999; text-align:center; }
.board_list td.checkbox { text-align:center; }
.board_list td.subject { overflow:hidden; }
.board_list td.name { padding:0 0 0 10px; }
.board_list td.datetime { font:normal 11px tahoma; color:#BABABA; text-align:center; }
.board_list td.hit { font:normal 11px tahoma; color:#BABABA; text-align:center; }
.board_list td.good { font:normal 11px tahoma; color:#BABABA; text-align:center; }
.board_list td.nogood { font:normal 11px tahoma; color:#BABABA; text-align:center; }

.board_list .notice { font-weight:normal; }
.board_list .current { font:bold 11px tahoma; color:#E15916; }
.board_list .comment { font-family:Tahoma; font-size:10px; color:#EE5A00; }

.board_button { clear:both; margin:10px 0 0 0; }

.board_page { clear:both; text-align:center; margin:3px 0 0 0; }
.board_page a:link { color:#777; }

.board_search { text-align:center; margin:10px 0 0 0; }
.board_search .stx { height:21px; border:1px solid #9A9A9A; border-right:1px solid #D8D8D8; border-bottom:1px solid #D8D8D8; }

.tab_line{padding:0 0 7px 0}
.tab_line ul{font:12px tahoma,sans-serif;margin:0;padding:0;border-bottom:1px solid #ccc;list-style:none;*zoom:1}
.tab_line ul,
.tab_line li a{position:relative}
.tab_line ul:after{display:block;clear:both;content:""}
.tab_line li,
.tab_line li a{float:left}
.tab_line li{margin-bottom:-1px}
.tab_line li a{border:1px solid #eee;border-bottom-color:#ccc;background:#fafafa;color:#666;text-decoration:none}
.tab_line li a span{display:inline-block;padding:6px 15px 6px 15px;letter-spacing:-1px;cursor:pointer}
.tab_line.m2 .m2 a,
.tab_line.m1 .m1 a{margin-top:-1px;border:1px solid #ccc;border-bottom:1px solid #fff;background:transparent;color:#333}
.tab_line.m2 .m2 a span,
.tab_line.m1 .m1 a span{padding-top:7px;font-weight:bold}
</style>

<!-- 게시판 목록 시작 -->
<table width="<?=$width?>" align="center" cellpadding="0" cellspacing="0"><tr><td>

<? if ($approver_id <> "false") { ?>
<div class="tab_line m1">
<ul>
<?
if($wr_1==""){$wr_1="Progress";}
if ($wr_1=="Progress"){echo "<li class='m1'>";}else{echo "<li class='m2'>";} echo "<a href='$g4[bbs_path]/board.php?bo_table=approval&wr_1=Progress&approver_id=$approver_id'><span>대기중</span></a></li>";
if ($wr_1=="Approve"){echo "<li class='m1'>";}else{echo "<li class='m2'>";} echo "<a href='$g4[bbs_path]/board.php?bo_table=approval&wr_1=Approve&approver_id=$approver_id'><span>결재완료</span></a></li>";
if ($wr_1=="Return"){echo "<li class='m1'>";}else{echo "<li class='m2'>";} echo "<a href='$g4[bbs_path]/board.php?bo_table=approval&wr_1=Return&approver_id=$approver_id'><span>반송</span></a></li>";
?>
</ul>
</div>
<?} else {?>

<div class="tab_line m1">
<ul>
<?

if ($ref_check==""){echo "<li class='m1'>";}else{echo "<li class='m2'>";} echo "<a href='$g4[bbs_path]/board.php?bo_table=approval&ref_check=&approver_id=$approver_id'><span>참조리스트</span></a></li>";
if ($ref_check=="ok"){echo "<li class='m1'>";}else{echo "<li class='m2'>";} echo "<a href='$g4[bbs_path]/board.php?bo_table=approval&ref_check=ok&approver_id=$approver_id'><span>확인완료</span></a></li>";

?>
</ul>
</div>

<?}?>
    <!-- 제목 -->
    <form name="fboardlist" method="post">
    <input type='hidden' name='bo_table' value='<?=$bo_table?>'>
    <input type='hidden' name='sfl'  value='<?=$sfl?>'>
    <input type='hidden' name='stx'  value='<?=$stx?>'>
    <input type='hidden' name='spt'  value='<?=$spt?>'>
    <input type='hidden' name='page' value='<?=$page?>'>
    <input type='hidden' name='sw'  value=''>


    <table border=0 cellspacing="0" cellpadding="0" class="board_list">
    <col width="50" /><? if ($is_checkbox) { ?><col width="40" /><? } ?><col />
  <? if ($approver_id <> "false") {?> <col width="420" /><?}?>
<col width="80" />
    <col width="100" />
    <col width="50" />
    <? if ($is_good) { ?><col width="40" /><? } ?>
    <? if ($is_nogood) { ?><col width="40" /><? } ?>
    <tr>
        <th>번호</th>
        <? if ($is_checkbox) { ?><th><input onclick="if (this.checked) all_checked(true); else all_checked(false);" type="checkbox"></th><?}?>
        <th>제&nbsp;&nbsp;&nbsp;목</th>
<? if ($approver_id <> "false") {?><th>진행사항</th><?}?>
        <th>상신자</th>
        <th><?=subject_sort_link('wr_datetime', $qstr2, 1)?>날짜</a></th>
        <th><?=subject_sort_link('wr_hit', $qstr2, 1)?>조회</a></th>
        <? if ($is_good) { ?><th><?=subject_sort_link('wr_good', $qstr2, 1)?>추천</a></th><?}?>
        <? if ($is_nogood) { ?><th><?=subject_sort_link('wr_nogood', $qstr2, 1)?>비추천</a></th><?}?>
    </tr>

    <?
    for ($i=0; $i<count($list); $i++) {
        $bg = $i%2 ? 0 : 1;
    ?>

    <tr class="bg<?=$bg?>">
        <td class="num">
            <?
            if ($list[$i][is_notice]) // 공지사항
                echo "<b>공지</b>";
            else if ($wr_id == $list[$i][wr_id]) // 현재위치
                echo "<span class='current'>{$list[$i][num]}</span>";
            else
                echo $list[$i][num];
            ?>
        </td>
        <? if ($is_checkbox) { ?><td class="checkbox"><input type=checkbox name=chk_wr_id[] value="<?=$list[$i][wr_id]?>"></td><? } ?>
        <td class="subject">
            <?
            echo $nobr_begin;
            echo $list[$i][reply];
            echo $list[$i][icon_reply];
            if ($is_category && $list[$i][ca_name]) {
                echo "<span class=small><font color=gray>[<a href='{$list[$i][ca_name_href]}'>{$list[$i][ca_name]}</a>]</font></span> ";
            }

            if ($list[$i][is_notice])
                echo "<a href='{$list[$i][pop_href]}'><span class='notice'>{$list[$i][subject]}</span></a>";
            else
                echo "<a href='{$list[$i][pop_href]}'>{$list[$i][subject]}</a>";

            if ($list[$i][comment_cnt])
                echo " <a href=\"{$list[$i][comment_href]}\"><span class='comment'>{$list[$i][comment_cnt]}</span></a>";

            // if ($list[$i]['link']['count']) { echo "[{$list[$i]['link']['count']}]"; }
            // if ($list[$i]['file']['count']) { echo "<{$list[$i]['file']['count']}>"; }

            echo " " . $list[$i][icon_new];
            echo " " . $list[$i][icon_file];
            echo " " . $list[$i][icon_link];
            echo " " . $list[$i][icon_hot];
            echo " " . $list[$i][icon_secret];
            echo $nobr_end;
?><INPUT TYPE='text' NAME='<?=$list[$i][wr_id]?>' id='<?=$list[$i][wr_id]?>'style="border: 0px;font-size:9pt; color:red; " size="2"  >
</td>
<? if ($approver_id <> "false") {?>
<td>
<?
$Approve_Status_name="";

$sql = " select approve_status,approver_id  from g4_approver_line where doc_id ='{$list[$i][wr_id]}' order by doc_Step asc";
$result = sql_query($sql);

for ($j=0; $row=sql_fetch_array($result); $j++)
{
$db_Approve_status =$row[approve_status];
$db_approver_name =get_member_name($row[approver_id]);

$Approve_Status_Img = "";

switch ($db_Approve_status ) {
case "Return" :
$Approve_Status_Img = "<font color='#993366'>반송</font>";
break;
case "Approve" :
$Approve_Status_Img ="<font color='#F43C38'>완료</font>";
break;
case "Ready" :
$Approve_Status_Img ="<font color='##0066FF'>준비</font>";
  break;
case "Progress" :
$Approve_Status_Img ="대기";
break;
case "First" :
$Approve_Status_Img ="선결";
break;
case "Check" :
$Approve_Status_Img ="확인";
break;


}
      if ($j=="0") {
$gubn =" - ";
}else{
$gubn =" <img src='/skin/board/document/img/icon_arrow.gif'> ";
}

          $Approve_Status_name =  $Approve_Status_name.$gubn.$db_approver_name." (".$Approve_Status_Img.")";
 
}
echo  $Approve_Status_name;
            ?>
        </td>
<?}?>
        <td class="name"><?=$list[$i][name]?></td>
        <td class="datetime"><?=$list[$i][datetime]?></td>
        <td class="hit"><?=$list[$i][wr_hit]?></td>
        <? if ($is_good) { ?><td class="good"><?=$list[$i][wr_good]?></td><? } ?>
        <? if ($is_nogood) { ?><td class="nogood"><?=$list[$i][wr_nogood]?></td><? } ?>
    </tr>
    <? } // end for ?>

    <? if (count($list) == 0) { echo "<tr><td colspan='$colspan' height=100 align=center>게시물이 없습니다.</td></tr>"; } ?>

    </table>
    </form>

<?if($approver_id=="") { //내가 기안한 문서에서만 나옴?>
    <div class="board_button">
        <div style="float:left;">
        <? if ($list_href) { ?>
        <a href="<?=$list_href?>"><img src="<?=$board_skin_path?>/img/btn_list.gif" align="absmiddle" border='0'></a>
        <? } ?>
        <? if ($is_checkbox) { ?>
        <a href="javascript:select_delete();"><img src="<?=$board_skin_path?>/img/btn_select_delete.gif" align="absmiddle" border='0'></a>
        <a href="javascript:select_copy('copy');"><img src="<?=$board_skin_path?>/img/btn_select_copy.gif" align="absmiddle" border='0'></a>
        <a href="javascript:select_copy('move');"><img src="<?=$board_skin_path?>/img/btn_select_move.gif" align="absmiddle" border='0'></a>
        <? } ?>
        </div>

        <div style="float:right;">
        <? if ($write_href) { ?><a href="<?=$write_href?>"><img src="<?=$board_skin_path?>/img/btn_write.gif" border='0'></a><? } ?>
        </div>
    </div>
<? } ?>
    <!-- 페이지 -->
    <div class="board_page">
        <? if ($prev_part_href) { echo "<a href='$prev_part_href'><img src='$board_skin_path/img/page_search_prev.gif' border='0' align=absmiddle title='이전검색'></a>"; } ?>
        <?
        // 기본으로 넘어오는 페이지를 아래와 같이 변환하여 이미지로도 출력할 수 있습니다.
        //echo $write_pages;
        $write_pages = str_replace("처음", "<img src='$board_skin_path/img/page_begin.gif' border='0' align='absmiddle' title='처음'>", $write_pages);
        $write_pages = str_replace("이전", "<img src='$board_skin_path/img/page_prev.gif' border='0' align='absmiddle' title='이전'>", $write_pages);
        $write_pages = str_replace("다음", "<img src='$board_skin_path/img/page_next.gif' border='0' align='absmiddle' title='다음'>", $write_pages);
        $write_pages = str_replace("맨끝", "<img src='$board_skin_path/img/page_end.gif' border='0' align='absmiddle' title='맨끝'>", $write_pages);
        //$write_pages = preg_replace("/<span>([0-9]*)<\/span>/", "$1", $write_pages);
        $write_pages = preg_replace("/<b>([0-9]*)<\/b>/", "<b><span style=\"color:#4D6185; font-size:12px; text-decoration:underline;\">$1</span></b>", $write_pages);
        ?>
        <?=$write_pages?>
        <? if ($next_part_href) { echo "<a href='$next_part_href'><img src='$board_skin_path/img/page_search_next.gif' border='0' align=absmiddle title='다음검색'></a>"; } ?>
    </div>

    <!-- 검색 -->
    <div class="board_search">
        <form name="fsearch" method="get">
        <input type="hidden" name="bo_table" value="<?=$bo_table?>">
        <input type="hidden" name="sca"      value="<?=$sca?>">
<input type='hidden' name='wr_1'  value='<?=$wr_1?>'>
    <input type='hidden' name='approver_id'  value='<?=$approver_id?>'>
<input type='hidden' name='ref_check'  value='<?=$ref_check?>'>

        <select name="sfl">
            <option value="wr_subject">제목</option>
            <option value="wr_content">내용</option>
            <option value="wr_subject||wr_content">제목+내용</option>
            <option value="mb_id,1">회원아이디</option>
            <option value="mb_id,0">회원아이디(코)</option>
            <option value="wr_name,1">글쓴이</option>
            <option value="wr_name,0">글쓴이(코)</option>
        </select>
        <input name="stx" class="stx" maxlength="15" itemname="검색어" required value='<?=stripslashes($stx)?>'>
        <input type="image" src="<?=$board_skin_path?>/img/btn_search.gif" border='0' align="absmiddle">
        <input type="radio" name="sop" value="and">and
        <input type="radio" name="sop" value="or">or
        </form>
    </div>

</td></tr></table>

<script type="text/javascript">
function Pop_Doc_View(Doc_id){
win_open("/skin/board/document/view.skin.php?bo_table=approval&wr_id="+Doc_id+"&page=1","Pop_Doc_View", "left=50,top=50,width=810, height=800,scrollbars=yes");
}

if ('<?=$sca?>') document.fcategory.sca.value = '<?=$sca?>';
if ('<?=$stx?>') {
    document.fsearch.sfl.value = '<?=$sfl?>';

    if ('<?=$sop?>' == 'and')
        document.fsearch.sop[0].checked = true;

    if ('<?=$sop?>' == 'or')
        document.fsearch.sop[1].checked = true;
} else {
    document.fsearch.sop[0].checked = true;
}
</script>

<? if ($is_checkbox) { ?>
<script type="text/javascript">
function all_checked(sw) {
    var f = document.fboardlist;

    for (var i=0; i<f.length; i++) {
        if (f.elements[i].name == "chk_wr_id[]")
            f.elements[i].checked = sw;
    }
}

function check_confirm(str) {
    var f = document.fboardlist;
    var chk_count = 0;

    for (var i=0; i<f.length; i++) {
        if (f.elements[i].name == "chk_wr_id[]" && f.elements[i].checked)
            chk_count++;
    }

    if (!chk_count) {
        alert(str + "할 게시물을 하나 이상 선택하세요.");
        return false;
    }
    return true;
}

// 선택한 게시물 삭제
function select_delete() {
    var f = document.fboardlist;

    str = "삭제";
    if (!check_confirm(str))
        return;

    if (!confirm("선택한 게시물을 정말 "+str+" 하시겠습니까?\n\n한번 "+str+"한 자료는 복구할 수 없습니다"))
        return;

    f.action = "./delete_all.php";
    f.submit();
}

// 선택한 게시물 복사 및 이동
function select_copy(sw) {
    var f = document.fboardlist;

    if (sw == "copy")
        str = "복사";
    else
        str = "이동";
                     
    if (!check_confirm(str))
        return;

    var sub_win = window.open("", "move", "left=50, top=50, width=500, height=550, scrollbars=1");

    f.sw.value = sw;
    f.target = "move";
    f.action = "./move.php";
    f.submit();
}

</script>
<? } ?>
<!-- 게시판 목록 끝 -->

댓글 전체

$sql = " select approve_status,approver_id  from g4_approver_line where doc_id ='{$list[$i][wr_id]}' order by doc_Step asc"; 

게시글 하나하나 마다 다시 쿼리를 날리는거 같네요

다른 방법을 찾아보셔야 할듯
어떤 방법으로 해야할까요??
원래 이거 하시던분이 퇴사 하셔가지구 저혼자 하고잇는데
전 이제막 졸업예정자인 ㅠㅠ

조언좀해주십시요 필요한 소스는 ㄷㅏ 보여드릴께요 ^^;;
<?
/*
$Approve_Status_name="";
~
~
echo  $Approve_Status_name;
*/
            ?>
위와 같이 게시물 마다 쿼리하는 부분을 주석처리 해놓고 실행해도 느린지 테스트 해보세요
대기, 확인 등을 처리하기 위해서 테이블을 하나더 만든 것 같은데
이런건 그냥 여분필드로 해도 충분할텐데
지금 저 부분을 주석 처리 해놓고 검색을 해도 느립니다...ㅠ

저부분을 주석처리 하면 게시판 목록이

번호 제목 진행사항 상신자 날짜 조회
이런항목에서 진행사항 목록만 안뜨고
검색속도는 똑같습니다...

어디가 문제인지 도와주실수 있나요?ㅠ
필요한 소스는 보내드릴꼐요...
제가 초보라서 너무 어렵네요 ㅠㅠ
이 게시판이 사내 그룹웨어 입니다 전자결재를 사용 하는 게시판인데요
조금 많다 싶은 데이터를 검색하면 검색속도가 무지하게 느리네요....
전체 66,554 |RSS
그누4 질문답변 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT