그누보드 튜닝 (get_sideview) (1) (취소한 코드)

불당   
   조회 6022   추천 0    

upgrade_turning4.php (931byte), Down : 4, 2008-04

그누보드에서 많이 사용되는 함수중 하나가 get_sideview 입니다.

이 함수는 사용자 정보에 sideview를 쓰기 위해서 필수인데, 거의 대부분의
사이트에서 sideview를 쓰는 현실을 생각할 때 이곳에서의 속도 개선이 나름
중요할 수 있다는 생각을 했습니다. 

사실, 여러대의 웹서버간에 퍼스나콘을 파일형태로 매번 찾는 것이 데이타 sync에
문제가 많이 생겨서 개선해야 겠다 생각하고 코드를 보고  과정에서 이부분에서
속도를 저하하는 이유가 있다는 생각이 들었습니다.

get_sideview에는 ... if (file_exists($icon_file)) { ... 라는 코드가 있는데 퍼스나콘을
사용하는 사용자가 수천명인 경우(파일이 수천개라는 의미죠)에 이 코드가 어떻게
동작하게 될까요???? 목록보기를 했을 때 목록이 30개인 경우 30번의 file_exist 함수가
호출 됩니다. 안그래도 바쁜 웹서버에게 목록 한번 볼때마다 30번의 disk operation을
그것도 파일찾기를 시키는 것 입니다.

이부분을 개선하면 꼭 필요한 (퍼스나콘이 있는) 사용자에 대해서만 파일찾기를
하면 됩니다. 이코드가 안정이 되었다 판단되면 굳이 파일찾기를 안해도 됩니다.

$g4[member_table]에 member_icon 필드를 추가 합니다.

ALTER TABLE `g4_member` ADD `member_icon` VARCHAR( 20 ) NOT NULL ;

퍼스나콘을 찾기 위해서 file_exist 함수를 수행하지 않게 common.lib.php의
get_sideview 함수를 다음과 같이 수정 합니다.

        if ($config['cf_use_member_icon'] and $member['member_icon']) {
            $mb_dir = substr($mb_id,0,2);
            $icon_file = "$g4[path]/data/member/$mb_dir/$mb_id.gif";

            //if (file_exists($icon_file) && is_file($icon_file)) {
            //if (file_exists($icon_file)) {
                //$size = getimagesize($icon_file);
                //$width = $size[0];
                //$height = $size[1];
                $width = $config['cf_member_icon_width'];
                $height = $config['cf_member_icon_height'];
                $tmp_name = "<img src='$icon_file' width='$width' height='$height' align='absmiddle' border='0'>";

                if ($config['cf_use_member_icon'] == 2) // 회원아이콘+이름
                    $tmp_name = $tmp_name . " <span class='member'>$name</span>";
            //}


퍼스나콘 정보를 저장하기 위해서 /bbs/register_form_update.php를 수정 합니다.
 
// 아이콘 삭제
if ($del_mb_icon) {
    @unlink("$mb_dir/$mb_id.gif");
   
    $sql = " update $g4[member_table] set member_icon = '0' where mb_id = '$mb_id' ";
    sql_query($sql);
}


...

            if (file_exists($dest_path))
            {
                $size = getimagesize($dest_path);
                // 아이콘의 폭 또는 높이가 설정값 보다 크다면 이미 업로드 된 아이콘 삭제
                if ($size[0] > $config[cf_member_icon_width] || $size[1] > $config[cf_member_icon_height])
                    @unlink($dest_path);
               
                $sql = " update $g4[member_table] set member_icon = '1' where mb_id = '$mb_id' ";
                sql_query($sql);
            }


사용자들이 등록하는 화면인 /skin/member/basic/register_form.skin.php을
아래 코드를 참조해서 수정해 주세요.

        <? if ($member[mb_level] >= $config[cf_icon_level]) { ?>
        <TR bgcolor="#FFFFFF">
            <TD width="160" class=m_title>회원아이콘</TD>
            <TD class=m_padding><INPUT class=m_text type=file name='mb_icon' size=30>
                <table width="350" border="0" cellspacing="0" cellpadding="0">
                    <tr>
                        <td class=m_padding3>* 이미지 크기는 가로(<?=$config[cf_member_icon_width]?>픽셀)x세로(<?=$config[cf_member_icon_height]?>픽셀) 이하로 해주세요.<br>&nbsp;&nbsp;(gif만 가능 / 용량:<?=number_format($config[cf_member_icon_size])?>바이트 이하만 등록됩니다.)
                            <? //if ($w == "u" && file_exists($mb_icon)) {
                               if ($w == "u" && $member[member_icon]) {
                                 if (file_exists($mb_icon)) {
                            ?>
                                <br><img src='<?=$mb_icon?>' align=absmiddle> <input type=checkbox name='del_mb_icon' value='1'>삭제
                            <? } else { ?>
                                <BR>이미지 파일이 없습니다. 다시 등록해 주시기 바랍니다.
                            <? } } ?>
                        </td>
                    </tr>
                </table></TD>
        </TR>
        <? } ?>

퍼스나콘 정보를 DB에서 업데이트 합니다. 첨부된 upgrade_turning4.php를
/adm 디렉토리에 업로드 한 이후에 실행하면 됩니다.


*** 이 코드는 작성중 너무 수정할 것이 엉키는 것 같아서 drop 했습니다 ***

- opencode.co.kr -


제목Page 1/4
2011-01   16690   불당
2008-04   15255   불당
2010-04   14115   불당
2008-09   7681   불당
2013-01   15909   불당
2013-06   13092   불당
2008-04   7602   불당
2008-04   8250   불당
2008-04   7186   불당
2008-04   7585   불당
2008-04   5825   불당
2008-04   7935   불당
2008-04   7228   불당
2008-04   7952   불당
2008-04   15255   불당
2008-04   8683   불당
2008-04   6023   불당
2008-04   6345   불당
2008-04   8016   불당
2008-04   8071   불당
2008-04   7230   불당
2008-04   6916   불당
2008-05   5977   불당