테스트 사이트 - 개발 중인 베타 버전입니다

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();
}
?>

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

게시판 목록

그누4 팁자료실

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