-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCACHE.php
More file actions
88 lines (73 loc) · 2.46 KB
/
Copy pathCACHE.php
File metadata and controls
88 lines (73 loc) · 2.46 KB
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
<?php
class CACHE
{
private function RETURN($STATUS, $MSG = null, $DATA = null)
{
$RETURN = array(
"STATUS" => ($STATUS == "OK") ? "OK" : "ERR",
(isset($MSG)) ? "MSG" : "" => $MSG,
(isset($DATA)) ? "DATAs" : "" => $DATA
);
foreach ($RETURN as $KEY => $VALUE) {
if (empty($VALUE)) {
unset($RETURN[$KEY]);
}
}
return $RETURN;
}
private function _ENCODE_ARRAY($DATA)
{
return base64_encode(gzcompress(json_encode($DATA)));
}
public function SAVE($DATA_KEY, $ARRAY = array())
{
$NOW = time();
$CACHE_META = array(
"CREATED_AT" => $NOW,
"UPDATED_AT" => $NOW,
"DATA_KEY" => $DATA_KEY,
);
$FILE_NAME = CACHE_LOCATION . "/" . $DATA_KEY;
if (file_exists($FILE_NAME) && $CACHE_FILE = file_get_contents($FILE_NAME)) {
$OLD_CACHE = json_decode(gzuncompress(base64_decode($CACHE_FILE)), true);
$CACHE_META['UPDATED_AT'] = $NOW;
$ARRAY = array_merge($ARRAY, $OLD_CACHE['DATA']);
}
$CACHE_DATA = self::_ENCODE_ARRAY(array(
"META" => $CACHE_META,
"DATA" => $ARRAY,
));
if (!is_dir($FILE_NAME)) {
$FILE_NAME_DIR = explode("/", $FILE_NAME);
array_pop($FILE_NAME_DIR);
$FILE_NAME_DIR = implode("/", $FILE_NAME_DIR);
if (!is_dir($FILE_NAME_DIR)) {
mkdir($FILE_NAME_DIR, 0777, true);
}
}
@chown($FILE_NAME, "www-data");
if (!file_put_contents($FILE_NAME, $CACHE_DATA)) {
return self::RETURN("ERR", "CACHE SAVE FAILED");
} else {
return self::RETURN("OK", "CACHE SAVE SUCCESS");
}
}
public function GET($DATA_KEY)
{
$FILE_NAME = CACHE_LOCATION . "/" . $DATA_KEY;
if ($CACHE_FILE = file_get_contents($FILE_NAME)) {
$CACHE_DATA = json_decode(gzuncompress(base64_decode($CACHE_FILE)), true);
return self::RETURN("OK", "CACHE FOUND", $CACHE_DATA);
}
return self::RETURN("ERR", "CACHE NOT FOUND");
}
public function DELETE($DATA_KEY)
{
$FILE_NAME = CACHE_LOCATION . "/" . $DATA_KEY;
if (file_exists($FILE_NAME)) {
unlink($FILE_NAME);
return self::RETURN("OK", "CACHE DELETED");
}
return self::RETURN("ERR", "CACHE NOT FOUND");
}
}