> 백엔드 개발 > PHP 튜토리얼 > 간단하고 실용적인 웹사이트 PHP 캐시 클래스 example_php 기술

간단하고 실용적인 웹사이트 PHP 캐시 클래스 example_php 기술

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
풀어 주다: 2016-05-16 20:39:48
원래의
983명이 탐색했습니다.

캐싱 기술은 실제 사용에서 널리 사용되며, 이를 통해 서버 데이터베이스에 대한 액세스 부담을 효과적으로 줄이고 운영 속도를 향상시킬 수 있습니다. 현재 많은 CMS 콘텐츠 관리 시스템은 시스템 운영 효율성을 높이기 위해 캐싱 메커니즘을 자주 사용합니다. 이 기사에서는 캐시 메커니즘과 쓰기 방법을 참조하는 데 도움이 되도록 간단하고 실용적인 캐시 클래스를 예로 들어 보겠습니다.

캐시 파일 cash.php 코드는 다음과 같습니다.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

<&#63;php 

/*

用户需要事先定义的常量:

_CachePath_    模板缓存路径

_CacheEnable_    自动缓存机制是否开启,未定义或为空,表示关闭自动缓存机制

_ReCacheTime_    自动重新缓存间隔时间,单位为秒,未定义或为空,表示关闭自动重新缓存

*/ 

class cache 

{

  var $cachefile

  var $cachefilevar

  function cache() 

  

    //生成当前页的Cache组文件名 $this->cachefilevar 及文件名 $this->cachefile 

    //动态页的参数不同对应的Cache文件也不同,但是每一个动态页的所有Cache文件都有相同的文件名,只是扩展名不同 

    $s=array(".","/");$r=array("_",""); 

    $this->cachefilevar=str_replace($s,$r,$_SERVER["SCRIPT_NAME"])."_".$_GET[_ActionVar_]; 

    $this->cachefile=$this->cachefilevar.".".md5($_SERVER["REQUEST_URI"]); 

  

  //删除当前页/模块的缓存 

  function delete() 

  

    //删除当前页的缓存 

    $d = dir(_CachePath_); 

    $strlen=strlen($this->cachefilevar); 

    //返回当前页的所有太原264医院Cache文件组 

    while (false !== ($entry = $d->read())) 

    

      if (substr($entry,0,$strlen)==$this->cachefilevar) 

      

        if (!unlink(_CachePath_."/".$entry)) {echo "Cache目录无法写入";exit;} 

      

    

  

  //判断是否已Cache过,以及是否需要Cache 

  function check() 

  

    //如果设置了缓存更新间隔时间 _ReCacheTime_ 

    if (_ReCacheTime_+0>0)

    

      //返回当前页Cache的最后更新时间 

      $var=@file(_CachePath_."/".$this->cachefilevar);$var=$var[0]; 

      //如果更新时间超出更新间隔时间则删除Cache文件 

      if (time()-$var>_ReCacheTime_) 

      

        $this->delete();$ischage=true; 

      

    

    //返回当前页的Cache 

    $file=_CachePath_."/".$this->cachefile; 

    //判断当前页Cache是否存在 且 Cache功能是否开启 

    return (file_exists($file) and _CacheEnable_ and !$ischange); 

  

  //读取Cache 

  function read() 

  

    //返回当前页的Cache 

    $file=_CachePath_."/".$this->cachefile; 

    //读取Cache文件的内容 

    if (_CacheEnable_) return readfile($file); 

    else return false; 

  

  //生成Cache 

  function write($output

  

    //返回当前页的Cache 

    $file=_CachePath_."/".$this->cachefile; 

    //如果Cache功能开启 

    if (_CacheEnable_) 

    

      //把输出的内容写入Cache文件 

      $fp=@fopen($file,'w'); 

      if (!@fputs($fp,$output)) {echo "模板Cache写入失败";exit;} 

      @fclose($fp); 

      //如果设置了缓存更新间隔时间 _ReCacheTime_ 

      if (_ReCacheTime_+0>0) 

      

        //更新当前页Cache的最后更新时间 

        $file=_CachePath_."/".$this->cachefilevar; 

        $fp=@fopen($file,'w'); 

        if (!@fwrite($fp,time())) {echo "Cache目录无法写入";exit;} 

        @fclose($fp); 

      

    

  

&#63;>

로그인 후 복사

캐시 클래스 사용법:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

<&#63;php 

  define("_CachePath_","./cache/"); 

  define("_CacheEnable_","1"); 

  define("_ReCacheTime_","43200"); 

  include('cache.php'); 

  $cache=new cache(); 

  if ($cache->check()) 

  

    $template=$cache->read(); 

  }

  else 

  

    ob_start(); 

    ob_implicit_flush(0); 

&#63;> 

  此处为页面内容。。。。 

<&#63;php 

    $template = ob_get_contents(); 

    $cache->write($template); 

  

&#63;>

로그인 후 복사
관련 라벨:
php
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿