본문 바로가기

공부/컴퓨터

php에서 화일을 이용한 페이지 캐슁

반응형
        function chan_page_cache($term)
        {
                // 페이지 실제 내용을 저장할때에도
                // 이 함수를 호출하게 된다. 이때에는
                // 가뿐히 무시해 준다.
                if ( $_GET[chan_page_cache] == "true" )
                        return;

                // 쿼리문이 같이 들어 오는것은 어떻게 처리 될지 알 수 없으므로
                // 그냥 처리하게 한다.
                if ( $_SERVER[QUERY_STRING] )
                        return;

                $url = "http://".$_SERVER[SERVER_NAME].$_SERVER[PHP_SELF];
                $filename = $_SERVER[DOCUMENT_ROOT].$_SERVER[PHP_SELF];
                $filename_ch = $_SERVER[DOCUMENT_ROOT].$_SERVER[PHP_SELF].".ch";

                // 내용 저장하는 화일 없으면 만들기
                if ( !file_exists($filename_ch ) ) {
                        fclose( fopen($filename_ch, "w") );
                }

                // 최근에 저장된 시간 읽어 오기
                $mtime = filemtime($filename_ch);
                
                // 정해진 시간이 지났으므로 저장을 하자~
                if ( $mtime <= time() - $term )
                {
                        $fp = fopen($filename_ch,"w");
                        // chan_page_cache 값을 넘기므로 해서.. 다시 이쪽으로 들어오지 않고
                        // 원래 수행 되어야 할 부분이 수행 되도록 처리를 하자.
                        // 이 값이 true 로 설정 되어 있으면 이 함수의 상단에서 바로
                        // 리턴하여 원래 수행하여야할 부분을 수행하게 한다.
                        $cache_url = $url."?chan_page_cache=true";

                        $fp2 = fopen($cache_url,"r");

                        while ( !feof($fp2) )
                        {
                                $cont = fread($fp2,2048);
                                fwrite($fp,$cont);
                        }
                        fclose($fp);
                        fclose($fp2);
                }


                // 저장한 내용을 뿌려 주자.
                $fp = fopen($filename.".ch","r");
                echo "<!-- cache time : ".date("Y/m/d H:i:s", $mtime). " -->
";
                if (!fpassthru($fp))
                        fclose($fp);

                fflush();
                exit;
}


반응형

'공부 > 컴퓨터' 카테고리의 다른 글

[용어정리] XML  (0) 2005.05.02
[용어정리] p2p  (0) 2005.05.02
MD5, SHA-1 암호화 깨지다!  (0) 2005.04.03
BMP 화일 처리하기..  (0) 2005.03.29
제어판 막기  (0) 2005.03.28