Home >Backend Development >PHP Tutorial >How to cache php variables in file form_PHP Tutorial

How to cache php variables in file form_PHP Tutorial

WBOY
WBOYOriginal
2016-07-13 09:48:42975browse

How to cache php variables in the form of files

This example describes how to cache php variables in the form of files. Share it with everyone for your reference. The specific implementation method is as follows:

?

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

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

/*

$cache_set = array(

//Cache path, add "/" at the end

'cacheRoot'=>'./cache/',

//Cache time

'cacheTime'=>20,

//cache type

'cacheType'=>1,

//Extension

'cacheExe'=>'.php'

);

$cache = new Cache($cache_set);

$a=array('1','2');

$a="aaa";

$b='';

if($cache->cache_is("d")){

$c=$cache->cache_read("d");

echo "c";

print_r($c);

}else {

$b=$cache->cache_data('d',$a);

}

print_r($b);

//$cache->clear("a");

//echo $cache->cache_read("./cache/d.php");

//echo $d;

*/

/**

* Data cache class v1.0

* @author shooke

* 2009-11-13 16:02:26

* Used to cache data, such as variables, but cannot cache pages

*/

class Cache{

//Configuration

public $config = array(

//Cache path

'cacheRoot'=>'./cache/',

//Cache time

'cacheTime'=>1,

//cache type 1 serialized data 2 variables

'cacheType'=>2,

//Extension

'cacheExe'=>'.php'

//Convert intermediate variables

);

public $return_name=array();

function __construct($cache_set = array())

{

if(!empty($cache_set)) $this->config=array_merge($this->config,$cache_set);

$this->config['ClassName'] = __CLASS__;

}

public function clear($filename=''){

if (file_exists($this->cache_file($filename))) {

@unlink($this->cache_file($filename));

}elseif (empty($filename)){

$this->clear_dir($this->config['cacheRoot']);

}else{

$this->clear_dir($this->config['cacheRoot'].$filename);

echo $this->config['cacheRoot'].$filename;

}

}

//Loop deletion path

private function clear_dir($dir,$to = false)

{

if ($list = glob($dir.'/*'))

{

foreach ($list as $file)

{

is_dir($file) ? $this->clear_dir($file) : unlink($file);

}

}

if ($to === false) rmdir($dir);

}

//Write cache

private function cache_write($filename, $writetext, $openmod='w'){

if (!file_exists($filename)) {

@$this->makeDir( dirname($filename ));

}

if(@$fp = fopen($filename, $openmod)) {

flock($fp, 2);

fwrite($fp, $writetext);

fclose($fp);

return true;

} else {

echo "File: $filename write error.";

return false;

}

}

//The cache validity period is valid and returns true

public function cache_is($fileName){

$fileName=$this->cache_file($fileName);

if( file_exists( $fileName ) ) {

//If the cache time is a negative number, it will never expire

if ($this->config['cacheTime'] < 0) {

return true;

}

//If the cache time is 0, it will always expire

if ($this->config['cacheTime'] == 0) {

return false;

}

//Get the creation time of the cache file

$ctime = intval(filemtime( $fileName ));

//Compare whether it is greater than the cache time, if so, it will expire, otherwise it will not expire

if (time() - $ctime > $this->config['cacheTime']) {

return false;

}else {

return true;

}

//The file does not exist and is considered expired

}else {

return false;

}

}

public function cache_data($name,$data){

$varname=$name;

$name = $this->cache_file($name);

//config['cacheTime']==0 means that caching is not enabled and data is returned directly

if ($this->config['cacheTime'] <> 0) {

if($this->config['cacheType']==1){

$write_data = "".serialize($data);

//return $data;

}else {

$write_data = "

$write_data .= var_export($data,true);

$write_data .=";\r\n?>";

}

$this->cache_write($name,$write_data);

}

return $data;

}

//缓存文件名

private function cache_file($filename){

return $this->config['cacheRoot'].$filename.$this->config['cacheExe'];

}

//读取文件

public function cache_read($file){

$file=$this->cache_file($file);

if (!file_exists($file)) {

return '';

}

if($this->config['cacheType']==1){

if (function_exists('file_get_contents')){

$cache_Content= file_get_contents($file);

}else{

$fopen = fopen($file,'r');

$cache_Content = '';

do {

$data = fread($fopen,filesize($file));

if (strlen($data)===0) break;

$cache_Content .= $data;

}while(1);

fclose($fopen);

}

$cache_Content = substr($cache_Content,13);/* 去除 */

$cache_Content = unserialize($cache_Content);

return $cache_Content;

}else{

include_once($file);

return $var;

}

}

//循环创建目录

private function makeDir( $dir, $mode = 0777 ) {

if( ! $dir ) return 0;

$dir = str_replace( "\\", "/", $dir );

$mdir = "";

foreach( explode( "/", $dir ) as $val ) {

$mdir .= $val."/";

if( $val == ".." || $val == "." || trim( $val ) == "" ) continue;

if( ! file_exists( $mdir ) ) {

if(!@mkdir( $mdir, $mode )){

return false;

}

}

}

return true;

}

}

?>

希望本文所述对大家的php程序设计有所帮助。

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1022063.htmlTechArticle以文件形式缓存php变量的方法 本文实例讲述了以文件形式缓存php变量的方法。分享给大家供大家参考。具体实现方法如下: ? 1 2 3 4 5 6 7...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn