ob_start, ob_end_flush > 그누4 팁자료실

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요.
나누면 즐거움이 커집니다.

ob_start, ob_end_flush 정보

ob_start, ob_end_flush

본문

네이버 검색 자료를 참조하여 계속 바껴야 하는 페이지의 DB 부담이 많은 파일을 HTML KB 수준으로 내리려고 찾아보고 적용해 봤습니다.
오래전에 플록님이 비슷한 소스를 팁으로 올려주신바 있으나 감히 침범을 합니다.
^^

이 코드는 원래 그누보드 view.skin.php에 있으나 함수 공부를 안하는 사람들은 늘 똑같은걸 빼끼기 마련이라 좀더 눈을 넓혀보시라 적어봅니다.

내용중에 혹 잘못된 코드도 있을수 있습니다.
스스로 알아서 해결하셔야 할겁니다.
필요하면 질문게시판으로...GO~

<?
# 폴더검사, 생성
$filedir = date("Ym");
$read_dir = "./경로/$filedir";

if (!is_dir($read_dir))
{
  @mkdir($read_dir, 0707);
  @chmod($read_dir, 0707);
}

# HTML 파일로 저장하기 위해서...
$reqfilename = "파일명";
$cachefile = $read_dir."/".$reqfilename.".inc";
/*
# 아래 두개의 주석은...
# 데이터 자체가 관리자가 비교 수정해야 하는 작업이라 자동화 하지를 못함.
# 데이터 처리가 많은 INDEX 화면과 차후 필요한 작업을 위해 코드만 일단 남겨둠.
# $cachetime = 60 * 60; //5 minutes # 체크해볼 시간비교
# if (file_exists($cachefile) && (time() - $cachetime < filemtime($cachefile))) { # 아래 include 파일을 참조하여 주석처리된 시간을 비교
*/
if (file_exists($cachefile))
{
  include_once("$cachefile");
  
  /*
  # 하단에서 tail 처리를 못함. 깨끗하게 비우지 못하는 버그가 있나?
  # 바로 이 아래 exit 코드 때문인가?
  # 이동 가능한 환경 찾아봐야지...
  */
  include_once("{$rc_path}/rc.tail.php");
  # 역시 관리자 작업이라 자동화 하지 못함.
  # echo "<!-- Cached ".date('jS F Y H:i', filemtime($cachefile))." -->\n"; # 데이터 업데이트 시간을 저장, 불러옴.
  exit;
}

# 관리자 실행, 어쩔수 없는 선택.
if ($inc == 'ok')
{
  ob_start(); # start the output buffer
}
?>

페이지 다양함.

<?
if ($inc == 'ok')
{
  $fp = @fopen($cachefile, 'a'); # 일단 빈 파일을 만들고...
  @chmod($cachefile, 0707); # 파일의 권한을 주고
  #$fp = @fopen($cachefile, 'w'); # 작성준비 이것도 가능함.
  $fp = @fopen($cachefile, 'r+'); # 수정, 쓰기 용이하므로 변경.
  fwrite($fp, ob_get_contents()); # 버퍼된 내용을 만들어진 파일에 작성함
  fclose($fp);
  @chmod($cachefile, 0606); # 파일의 권한을 변경.
 
  ob_end_flush();
}
?>

추천
1
  • 복사

댓글 0개

© SIRSOFT
현재 페이지 제일 처음으로