ホームページ  >  記事  >  バックエンド開発  >  PHP 変数をファイル form にキャッシュする方法_PHP チュートリアル

PHP 変数をファイル form にキャッシュする方法_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 09:48:42926ブラウズ

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

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 = 配列(

//キャッシュパス、最後に「/」を追加します

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

//キャッシュ時間

'cacheTime'=>20,

//キャッシュタイプ

'cacheType'=>1,

//拡張子

'cacheExe'=>'.php'

);

$cache = 新しいキャッシュ($cache_set);

$a=配列('1','2');

$a="ああ";

$b='';

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

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

エコー「c」;

print_r($c);

}その他{

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

}

print_r($b);

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

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

//エコー $d;

*/

/**

* データ キャッシュ クラス v1.0

* @著者shake

* 2009-11-13 16:02:26

* 変数などのデータをキャッシュするために使用されますが、ページをキャッシュすることはできません

*/

クラスキャッシュ{

//構成

パブリック $config = array(

//キャッシュパス

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

//キャッシュ時間

'cacheTime'=>1,

//キャッシュ タイプ 1 シリアル化データ 2 変数

'cacheType'=>2,

//拡張子

'cacheExe'=>'.php'

//中間変数を変換する

);

パブリック $return_name=array();

関数 __construct($cache_set = array())

{

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

$this->config['クラス名'] = __CLASS__;

}

パブリック関数clear($filename=''){

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

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

}elseif (空($filename)){

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

}その他{

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

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

}

}

//ループ削除パス

プライベート関数clear_dir($dir,$to = false)

{

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

{

foreach ($list を $file として)

{

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

}

}

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

}

//ライトキャッシュ

プライベート関数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);

true を返す;

} 他 {

echo "ファイル: $filename 書き込みエラー。";

false を返す;

}

}

//キャッシュの有効期間が有効であれば true を返します

パブリック関数cache_is($fileName){

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

if( file_exists( $fileName ) ) {

//キャッシュ時間が負の数の場合、有効期限は切れません

if ($this->config['cacheTime']

true を返す;

}

//キャッシュ時間が 0 の場合、常に期限切れになります

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

false を返す;

}

//キャッシュファイルの作成時刻を取得します

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

//キャッシュ時間より大きいかどうかを比較し、大きい場合は期限切れになり、そうでない場合は期限切れになりません

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

false を返す;

}その他{

true を返す;

}

//ファイルは存在しないため、期限切れとみなされます

}その他{

false を返す;

}

}

パブリック関数cache_data($name,$data){

$varname=$name;

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

//config['cacheTime']==0 は、キャッシュが有効になっておらず、データが直接返されることを意味します

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

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

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

//$data を返す;

}その他{

$write_data = "

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

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

}

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

}

$data を返す;

}

//缓存文件名

プライベート関数cache_file($filename){

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

}

//读取文件

パブリック関数cache_read($file){

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

if (!file_exists($file)) {

戻る '';

}

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

if (function_exists('file_get_contents')){

$cache_Content= file_get_contents($file);

}その他{

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

$cache_Content = '';

する{

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

if (strlen($data)===0) ブレーク;

$cache_Content .= $data;

}ながら(1);

fclose($fopen);

}

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

$cache_Content = unserialize($cache_Content);

$cache_Content を返す;

}その他{

include_once($file);

$var を返す;

}

}

//循環环创建目录

プライベート関数 makeDir( $dir, $mode = 0777 ) {

if( ! $dir ) return 0;

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

$mdir = "";

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

$mdir .= $val."/";

if( $val == ".." || $val == "." || トリム( $val ) == "" ) 続行;

if( ! file_exists( $mdir ) ) {

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

false を返す;

}

}

}

true を返す;

}

}

?>

ここで説明されている大家向けの php プログラムの設計が役立つことを希望します。

http://www.bkjia.com/PHPjc/1022063.html

tru​​ehttp://www.bkjia.com/PHPjc/1022063.html技術記事 php の量をファイルの形で保存する方法 ここでは、php の量をファイルの形で保存する方法を例として説明する。 1 2 3 4 5 6 7...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。