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개