ホームページ > php教程 > php手册 > PHP缓存操作实例详解

PHP缓存操作实例详解

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
リリース: 2016-06-13 09:36:23
オリジナル
1005 人が閲覧しました

为什么要使用缓存技术?理由很简单:提高效率。在程序开发中,获取信息的方式主要是查询数据库,除此以外,也可能是通过Web Services或者别的某种方法,无论哪种方法,在大量的并发访问面前,它们都可能成为效率的瓶颈,为了解决这些问题,人们提出了很多解决方案,其中一些是利用优化软件(如:APC,Eaccelerator,Zend Optimizer等等)来提高程序的运行效率,合理的运用这些软件,往往能使程序的运行效率得到数量级上的提升,但前提是你必须拥主机的控制权,以便能够安装这些软件,如果你使用的是虚拟主机的话,那么只能祈祷你的服务提供商已经预装了某个优化软件,否则就必须自己使用PHP来实现相应的缓存功能。如果这让你感到无所适从,相信下面的这段缓存操作类的代码能给你一些有用的启发。(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

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

<?php

/**

+---------------------------------------------------------- 

* franklin 缓存操作类 

+---------------------------------------------------------- 

* 文件名称  cache.php 

+---------------------------------------------------------- 

* 文件描述  缓存操作类 

+---------------------------------------------------------- 

* 作 者  http://www.phpernote.com 

+---------------------------------------------------------- 

* 时 间  2012-05-05 

+---------------------------------------------------------- 

*/ 

 

class cache{

//查询参数

protected $options=array();

//缓存次数

protected $cacheCount=0;

//缓存时间

protected $cachetime=60;

//缓存路径

protected $cachePath='cache/';

//数据返回类型, 1代表数组, 2代表对象

protected $returnType=1;

/** 

* 读取缓存 

* @param string $id  缓存名称 

* @param int $time 缓存有效时间,默认为60秒,0为永远失效 

* @param string $path缓存文件存放路径 

* @accesspublic readCache 

* @returnmixed如果读取成功返回缓存内容, 否则返回NULL 

*/ 

public function readCache($id,$time,$Path=''){

    $id=md5($id);

    $this->cachePath=emptyempty($Path)?$this->cachePath:$Path;

    $this->cachetime=emptyempty($time)?$this->cachetime:$time;

    $file=$this->cachePath.$id.'.php';

    if(file_exists($file)){

        //缓存过期

        if((filemtime($file)+$time)<time()){

            @unlink($file);

            return NULL;

        }

        if(1===$this->returnType){

            $row=include $file;

        }else{

            $data=file_get_contents($file);

            $row=unserialize($data);

        }

        return $row;

    }

    return NULL;

}

/** 

* 写入缓存 

* @accesspublic 

* @param mixed$data缓存内容 

* @returnbool是否写入成功 

*/ 

 

public function writeCache($id,$data,$Path=''){

    $this->cacheCount++;

    $id=md5($id);

    $this->cachePath=emptyempty($Path)?$this->cachePath:$Path;

    $file=$this->cachePath.$id.'.php';

    chmod($this->cachePath,777);

    if(1===$this->returnType){

        $data='<?php return '.var_export($data, TRUE).'; ?>';

    }else{

        $data=serialize($data);

    }

    return file_put_contents($file, $data);

}

/** 

* 删除指定缓存 

* @accesspublic 

* @param mixed$id缓存名称 

* @returnbool是否删除成功 

*/ 

public function delCache($id,$Path=''){ 

    $id=md5($id);

    $this->cachePath=emptyempty($Path)?$this->cachePath:$Path;

    $file=$this->cachePath.$id.'.php';

    if(file_exists($file)){

        return unlink($file);

    }

    return NULL;

}

/** 

* 删除所有缓存 

* @accesspublic 

* @param mixed$dir缓存名称 

* @returnbool清除所有缓存是否成功 

*/ 

public function delAllCache($Path=''){ 

    $id=md5($id);

    $this->cachePath=emptyempty($Path)?$this->cachePath:$Path;

    $path=$this->cachePath;

    if(is_dir($path)){

        if($dh=opendir($path)){

            while(($file=readdir($dh))!==false){

                if($file!='..'&$file!='.'){

                    if(is_dir($path.'/'.$file)){

                        if(!delDir($path.'/'.$file)){

                            return 0;

                        }

                    }else{

                        if(!unlink($path.'/'.$file)){

                            return 0;

                        }

                    }

                }

            }

            closedir($dh);

        }

        return 1;

    }

}

}

ログイン後にコピー

以上缓存操作类的引用方法如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

<?php

include('cache.php');

$data=array('http://www.phpernote.com','http://www.baidu.com','http://www.google.cn');

$cache=new cache();

$id='test';

//写入缓存

$cache->writeCache($id,$data);

//读缓存并打印

$name_row=$cache->readCache($id,120);

print_r($name_row);

//删除某个变量

$cache->delCache($id);

//删除全部缓存

$cache->delAllCache();

ログイン後にコピー

注意要保证cache目录(即缓存目录)存在并且可写。

您可能感兴趣的文章

  • php获取当前操作系统类型
  • 用PHP函数memory_get_usage获取当前PHP内存消耗量以实现程序的性能优化
  • PHP生成迅雷、快车、QQ旋风下载链接的实例
  • php如何判断当前的操作系统是linux还是windows
  • php用ZipArchive函数实现文件的压缩与解压缩
  • php实现多重继承实例
  • PHP缓存技术详解
  • php获取目录所有文件并将结果保存到数组的程序
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
関連するチュートリアル
人気のおすすめ
最新のコース
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート