글쓴사람 마르크젝
글쓴시간2007년 3월 8일 오전 9시 11분 6초
    제목음.. 속도에 대해서...
안녕하세요....
언더바를 잘 사용하고 있습니다..
헌데, 이상하게 한 사이트(cafe24)에서 템플릿 출력에서 딜레이 현상이 보입니다...
print 구문 전까지는 0.X대인데.. print 구문에서 체감시간 5~7초정도 걸리고 나서야
출력이 되는데요...
실상 서비스가 불가할 정도네요.......
제가 혹시나 간과하고 있는 부분이 있을까요.......;;;
에러도 아니고;; 속도라...... 흐음...
오히려 더 막막하네요.;;
관리자 마르크젝님 안녕하세요.

템플릿내에서도 php 함수나 객체를 사용할 수 있으니까,예를 들면

{=shell_exec()} 나 {db->query_to_get_value()}

같은 코드를 사용했는데, 허용되지 않는 시스템 명령어때문이라든가 혹 디비부하 문제라거나 시스템 사정에 따라 느려질 수 있을 겁니다.

정확한 원인은 디버깅을 해봐야 알 수 있을텐데..

print 직전까지는 안느렸다고 하셨으니까.. 정확히 어디서  느려지는지 알아내기 위해..

해당 템플릿 파일과 필요하다면 Template_.class.php 파일 군데군데에

<?php echo 1; flush();?>
<?php echo 2; flush();?>

이런 코드를 껴 넣는다든가 템플릿 파일 내용을 다 지우고 조금씩 추가해가며 해본다든가 좀 성가신 작업이 필요할지 모르겠습니다.
07-03-08 09:47
마르크젝 답변 잘 보았습니다.
느려지는 부분은 아래 function 부분입니다..
아래와 같이 디버깅 했습니다..
제가 현재 의심할 수 있는 부분은
템플릿 변수로 많은 정의를 했다는 것입니다..
이러한 이유로 치환하는 과정에서 딜레이가 있을 수 있을까 하는 부분입니다...
   
   function _include_tpl($TPL_CPL, $TPL_TPL, $TPL_SCP)
    {
        $TPL_VAR = &$this->var_[$TPL_SCP];
echo "include ".$TPL_CPL." Starting.....<br>"; flush();
        if (false===include_once $TPL_CPL) exit;
echo "include End!!<br>"; flush();
    }
07-03-09 14:03
관리자 메모리를 초과하면 php가 에러메세지를 내고 중단되는데.. 그런 경우도 아니고 실행시간에 메모리에 올라간 변수때문에 느려질 수도 있는건지는 저도 모르겠네요.

일단 인클루드 하는 동안에 느려졌다는 걸 확인하셨는데..
해당 템플릿 내에 디버깅 코드를 넣어서.. 인클루드 하는 동안 어느 포인트에서 딜레이가 걸리는지 확인해 보시기 바랍니다.


<?php echo "point 1"; flush();?>
<td>{=my_func()}</td>
<?php echo "point 2"; flush();?>

이런 식으로 확인 하는 코드를 테이블 태그로 감싸고 있다면 "point 1"이 브라우저까지 왔어도 보이지 않는다는 것 참고하시구요.

테이블 레이아웃이면 레이아웃이 끝날때까지 아무것도 보이지 않겠죠.

예전에 템플릿 문제라고 짐작하셨던 분과 코멘트 37번 오고간 끝에 네트웤 문제로 확인하셨던 경우도 있었습니다.
07-03-09 14:58
관리자 혹시 php.ini 정보에서

implicit_flush 값이 Off 로 설정되어있는지 확인해보시기 바랍니다.

어떤 이유든간에 php 기본출력버퍼가 동작안해서 echo 때마다 출력 부하가 걸려 일어난 문제일 수 있는데, 그럴 경우


$tpl->print_('file_id');

대신

echo $tpl->fetch('file_id');


로 해서 해결할 수 있습니다.
07-03-09 16:43
마르크젝 관리자님 말씀데로 implicit_flush 가 off 로 되어 있었네요.
On으로 방금 수정했고, 속도 개선이 있는거 같습니다.
도움 감사드립니다...
07-05-04 15:59
    이름
비밀번호
 
Since 2003-03-03 hosted on vultr.com