-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathfilecache.php
More file actions
58 lines (42 loc) · 1.27 KB
/
filecache.php
File metadata and controls
58 lines (42 loc) · 1.27 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
<?php
// https://evertpot.com/107/
// Our class
class FileCache {
// This is the function you store information with
function store($key,$data,$ttl) {
// Opening the file
$h = fopen($this->getFileName($key),'w');
if (!$h) throw new Exception('Could not write to cache');
// Serializing along with the TTL
$data = serialize(array(time()+$ttl,$data));
if (fwrite($h,$data)===false) {
throw new Exception('Could not write to cache');
}
fclose($h);
}
// General function to find the filename for a certain key
private function getFileName($key) {
global $DBCONFIG;
return '/tmp/s_cache-' . $DBCONFIG->name . "-" . md5($key);
}
// The function to fetch data returns false on failure
function fetch($key) {
$filename = $this->getFileName($key);
if (!file_exists($filename) || !is_readable($filename)) return false;
$data = file_get_contents($filename);
$data = @unserialize($data);
if (!$data) {
// Unlinking the file when unserializing failed
unlink($filename);
return false;
}
// checking if the data was expired
if (time() > $data[0]) {
// Unlinking
unlink($filename);
return false;
}
return $data[1];
}
}
?>