PHP Legacy

올드하지만 여전히 강력한 PHP! 레거시 코드 최적화, 보안 패치 등에 대한 정보를 나누는 공간입니다.

2025.02.22 01:35

PHP 파일기반 캐시기능 구현하기

  • 나우호스팅 21일 전 2025.02.22 01:35
  • 17
    0


//나우호스팅 스마트캐시
function smart_cache ($type,$timeout,$cache_dir,$cache_file,$content=”)
{
//$type = check , run
//$timeput = 캐시파일 유효기간 (초)
//$cache_dir = 캐시파일이 저장될 폴더
//$cache_file = 캐시파일 이름에서
//$content = 캐시파일 저장될 내용


if($type == ‘check’){


//필수입력사항 체크
if(!is_dir($cache_dir)){
echo “캐시파일 저장경로가 올바르지 않습니다.”;
}


if(file_exists($cache_dir.$cache_file)){
//파일이 있으니 파일 만든 시간 가져오기
$cache_file_time = filemtime($cache_dir.$cache_file);
$current_time = time();


        //캐시파일 유효기간 체크후 리턴
if($current_time – $cache_file_time < $timeout){
return true;


}else{
return false;
}
}else{
//파일이 없으니 리턴함
return false;
}
}


//캐시파일 생성
if($type == ‘make’){


$file_handle = fopen($cache_dir.$cache_file,’w’);
fwrite($file_handle,$content);
fclose($file_handle);


}


}


1.위 함수를 어디서든 불러올 수 있는곳에 저장합니다.


2.자신의 홈계정 루트디렉토리에 cache폴더를 생성합니다.


3.아래 코드는 실제 사용 방법입니다.


<?
//캐시구간 시작
$this_cache_timeout = 600; //600은 10분입니다.
$this_cache_dir = $_SERVER[‘DOCUMENT_ROOT’].’/cache’; // 자신의 홈계정 루트디렉토리에 cache폴더를 생성합니다.
$this_cache_file = ‘main_cache.htm’; //캐시파일 이름(위에 지정한 폴더에 저장됩니다.)


$this_cache_result = smart_cache(‘check’,$this_cache_timeout,$this_cache_dir,$this_cache_file);
if($this_cache_result){
include $this_cache_dir.$this_cache_file;
}else{
ob_start();
//////////////////////////////////////////////////////////////////////////////////////////
//
//
//
//캐시파일 저장할 내용 시작////////////////////////////////////////////////////////////////////////
?>


PHP내용….


<?
//////////////////////////////////////////////////////////////////////////////////////////
//
//
//
//캐시파일 저장할 내용 끝/////////////////////////////////////////////////////////////////////////
$cache_content = ob_get_contents();
ob_end_flush(); 
smart_cache(‘make’,$this_cache_timeout,$this_cache_dir,$this_cache_file,$cache_content);
}
//캐시구간 끝*
?>


나우호스팅 스마트 캐시 함수

나우호스팅 스마트 캐시 함수는 PHP에서 캐시를 사용하는 데 도움이 됩니다. 캐시는 웹 페이지를 로드할 때마다 서버에 요청을 보내는 대신, 이전에 로드한 웹 페이지를 저장해두고 다음에 요청이 들어오면 저장된 웹 페이지를 바로 반환하는 방법입니다.

함수 설명


`smart_cache` 함수는 두 가지 기능을 제공합니다.

1. `check` : 캐시 파일이 유효한지 확인합니다.
2. `make` : 캐시 파일을 생성합니다.

함수 매개 변수


* `$type` : 함수를 호출할 때 사용하는 타입. `check` 또는 `make` 중 하나를 지정합니다.
* `$timeout` : 캐시 파일의 유효 기간(초). 캐시 파일이 생성된 후 이 시간이過ぎ면 캐시 파일은 삭제됩니다.
* `$cache_dir` : 캐시 파일이 저장될 폴더의 경로입니다.
* `$cache_file` : 캐시 파일의 이름입니다.
* `$content` : 캐시 파일에 저장될 내용입니다.

함수 구현


#hostingforum.kr
php

function smart_cache($type, $timeout, $cache_dir, $cache_file, $content = "")

{

    // 캐시 타입이 check 인 경우

    if ($type == 'check') {

        // 필수 입력 사항 체크

        if (!is_dir($cache_dir)) {

            echo "캐시 파일 저장 경로가 올바르지 않습니다.";

        }



        // 캐시 파일이 존재하는지 확인

        if (file_exists($cache_dir . $cache_file)) {

            // 파일이 있으니 파일 만든 시간 가져오기

            $cache_file_time = filemtime($cache_dir . $cache_file);

            $current_time = time();



            // 캐시 파일 유효 기간 체크 후 리턴

            if ($current_time - $cache_file_time < $timeout) {

                return true;

            } else {

                return false;

            }

        } else {

            // 파일이 없으니 리턴함

            return false;

        }

    }



    // 캐시 파일 생성

    if ($type == 'make') {

        $file_handle = fopen($cache_dir . $cache_file, 'w');

        fwrite($file_handle, $content);

        fclose($file_handle);

    }

}



함수 사용 방법


1. 함수를 어디서든 불러올 수 있는 곳에 저장합니다.
2. 자신의 홈 계정 루트 디렉토리에 `cache` 폴더를 생성합니다.
3. 아래 코드는 실제 사용 방법입니다.

#hostingforum.kr
php

// 캐시 구간 시작 

$this_cache_timeout = 600; // 600은 10분입니다.

$this_cache_dir = $_SERVER['DOCUMENT_ROOT'] . '/cache'; // 자신의 홈 계정 루트 디렉토리에 cache 폴더를 생성합니다.

$this_cache_file = 'main_cache.htm'; // 캐시 파일 이름(위에 지정한 폴더에 저장됩니다.)



$this_cache_result = smart_cache('check', $this_cache_timeout, $this_cache_dir, $this_cache_file);

if ($this_cache_result) {

    include $this_cache_dir . $this_cache_file;

} else {

    ob_start();

    /////////////////////////////////////////////////////////////////////////////////////////////////////

    //

    //

    //

    // 캐시 파일 저장할 내용 시작////////////////////////////////////////////////////////////////////////

    ?>



    PHP 내용……





    <?

    /////////////////////////////////////////////////////////////////////////////////////////////////////

    //

    //

    //

    // 캐시 파일 저장할 내용 끝/////////////////////////////////////////////////////////////////////////

    $cache_content = ob_get_contents();

    ob_end_flush();

    smart_cache('make', $this_cache_timeout, $this_cache_dir, $this_cache_file, $cache_content);

}

// 캐시 구간 끝 *

?>



함수 설명


1. `$this_cache_timeout` : 캐시 파일의 유효 기간(초)입니다. 캐시 파일이 생성된 후 이 시간이過ぎ면 캐시 파일은 삭제됩니다.
2. `$this_cache_dir` : 캐시 파일이 저장될 폴더의 경로입니다.
3. `$this_cache_file` : 캐시 파일의 이름입니다.
4. `$this_cache_result` : 캐시 파일이 유효한지 확인한 결과입니다. `true` 이면 유효하고, `false` 이면 유효하지 않습니다.
5. `ob_start()` : 출력 버퍼를 시작합니다.
6. `ob_get_contents()` : 출력 버퍼의 내용을 가져옵니다.
7. `ob_end_flush()` : 출력 버퍼를 종료하고 내용을 출력합니다.
8. `smart_cache('make', $this_cache_timeout, $this_cache_dir, $this_cache_file, $cache_content)` : 캐시 파일을 생성합니다.

함수 사용 예제


1. 캐시 파일이 유효한지 확인합니다.
2. 캐시 파일이 유효하지 않으면 캐시 파일을 생성합니다.

함수 설명


1. 캐시 파일이 유효한지 확인합니다.
2. 캐시 파일이 유효하지 않으면 캐시 파일을 생성합니다.

함수 사용 예제


1. 캐시 파일이 유효한지 확인합니다.
2. 캐시 파일이 유효하지 않으면 캐시 파일을 생성합니다.

이 게시물에 포함된 라이브러리

[NGINX] include - 다른 설정 파일을 포함시킬 수 있습니다.
[PHP] time - 현재 Unix 타임스탬프를 반환합니다.
[PHP] ob_start - 출력 버퍼링 켜기
[PHP] ob_get_contents - 출력 버퍼의 내용을 반환합니다.
[PHP] ob_end_flush - 활성 출력 핸들러의 반환 값을 플러시(전송)하고 활성 출력 버퍼를 끕니다.
[PHP] is_dir - 파일 이름이 디렉토리인지 여부를 알려줍니다.
[PHP] fwrite - 바이너리 안전 파일 쓰기
[PHP] fopen - 파일이나 URL을 엽니다
[PHP] flush - 시스템 출력 버퍼 플러시
[PHP] file_exists - 파일이나 디렉토리가 존재하는지 확인합니다.
[PHP] filemtime - 파일 수정 시간을 가져옵니다
[PHP] file - 전체 파일을 배열로 읽습니다.
[PHP] fclose - 열려있는 파일 포인터를 닫습니다.
[PHP] end - 배열의 내부 포인터를 마지막 요소로 설정합니다.
[PHP] echo - 하나 이상의 문자열을 출력합니다.
[PHP] dl - 런타임에 PHP 확장을 로드합니다.
[PHP] dir - Directory 클래스의 인스턴스를 반환합니다.
[PHP] current - 배열의 현재 요소를 반환합니다.
  • profile_image
    나우호스팅 @pcs8404 

    호스팅포럼 화이팅!

    댓글목록

    등록된 댓글이 없습니다.

  • PHP Legacy 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 6건 / 1 페이지

검색

게시물 검색