annotate CacheTimeCheck.inc @ 68:4dfa3f6a2dc1

Modify CacheTimeCheck to have a common parent, and two different implementations for script caches and file caches. Support for linkedcaches.
author Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
date Thu, 11 Oct 2012 23:16:53 +0200
parents 7b87ec8b0842
children dd4ddedca4c5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
1 <?php
52
3898353ed1d8 Include fixes.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 50
diff changeset
2 $baseDir = dirname(__FILE__);
3898353ed1d8 Include fixes.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 50
diff changeset
3
65
7b87ec8b0842 Renamed logger to Logger.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 64
diff changeset
4 include_once 'Logger.inc';
52
3898353ed1d8 Include fixes.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 50
diff changeset
5 include_once 'common-functions.inc';
68
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
6 $cache = ScriptIncludeCache::instance(__FILE__);
65
7b87ec8b0842 Renamed logger to Logger.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 64
diff changeset
7 $cache->cache_time("${baseDir}/Logger.inc");
52
3898353ed1d8 Include fixes.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 50
diff changeset
8 $cache->cache_time("${baseDir}/common-functions.inc");
3898353ed1d8 Include fixes.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 50
diff changeset
9
68
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
10 class FileCacheSet {
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
11 private $newest = 0;
32
7b19be62ea94 Remove yet another global, replace by CacheTimeCheck class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 27
diff changeset
12 private $files = array();
68
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
13 private $parentCaches = array();
6
6c0162497d56 Improved error reporting, and support for multilevel params.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 0
diff changeset
14
68
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
15 protected function __construct($parent = null) {
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
16 if ($parent) {
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
17 $this->addParent($parent);
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
18 }
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
19 }
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
20
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
21 protected function addParent($parent)
32
7b19be62ea94 Remove yet another global, replace by CacheTimeCheck class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 27
diff changeset
22 {
68
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
23 array_push($this->parentCaches, $parent);
32
7b19be62ea94 Remove yet another global, replace by CacheTimeCheck class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 27
diff changeset
24 }
0
d2da64705bce Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff changeset
25
48
c6d0892f81ff Documentation.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 47
diff changeset
26 /**
c6d0892f81ff Documentation.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 47
diff changeset
27 * List a set of files which contributes to this pages cacheset.
c6d0892f81ff Documentation.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 47
diff changeset
28 *
c6d0892f81ff Documentation.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 47
diff changeset
29 * @param $humanReadable If the timestamp should be humand readable.
c6d0892f81ff Documentation.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 47
diff changeset
30 *
c6d0892f81ff Documentation.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 47
diff changeset
31 * @return an associative array of file, and timestamp
c6d0892f81ff Documentation.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 47
diff changeset
32 */
47
66382989353f Extract baseDir only once.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 40
diff changeset
33 function cacheSet($humanReadable = False)
66382989353f Extract baseDir only once.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 40
diff changeset
34 {
66382989353f Extract baseDir only once.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 40
diff changeset
35 $retVal = array();
68
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
36 foreach ($this->parentCaches as $parent) {
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
37 $retVal = array_merge($retVal, $parent->cacheSet($humanReadable));
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
38 }
47
66382989353f Extract baseDir only once.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 40
diff changeset
39 foreach($this->files as $file) {
66382989353f Extract baseDir only once.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 40
diff changeset
40 $mtime = filemtime($file);
66382989353f Extract baseDir only once.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 40
diff changeset
41 if ($humanReadable)
66382989353f Extract baseDir only once.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 40
diff changeset
42 $mtime = gmdate('D, d M Y H:i:s', $mtime) . ' GMT';
66382989353f Extract baseDir only once.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 40
diff changeset
43
66382989353f Extract baseDir only once.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 40
diff changeset
44 $retVal[$file] = $mtime;
66382989353f Extract baseDir only once.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 40
diff changeset
45 }
66382989353f Extract baseDir only once.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 40
diff changeset
46 return $retVal;
66382989353f Extract baseDir only once.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 40
diff changeset
47 }
66382989353f Extract baseDir only once.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 40
diff changeset
48
48
c6d0892f81ff Documentation.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 47
diff changeset
49 /**
c6d0892f81ff Documentation.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 47
diff changeset
50 * Include a file in the cacheset
c6d0892f81ff Documentation.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 47
diff changeset
51 *
c6d0892f81ff Documentation.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 47
diff changeset
52 * @param $path the path of the file
c6d0892f81ff Documentation.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 47
diff changeset
53 */
50
2d0cda52f43f Remove unused variable.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 48
diff changeset
54 function cache_time($path)
32
7b19be62ea94 Remove yet another global, replace by CacheTimeCheck class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 27
diff changeset
55 {
39
bd82b719a0de Make CacheTimeCheck a singleton.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 38
diff changeset
56 if (!file_exists($path)) {
64
164268b4e0d9 Make class of logger.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 52
diff changeset
57 Logger::warn("${path} does not exist");
52
3898353ed1d8 Include fixes.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 50
diff changeset
58 errorPage("Resource is not available");
39
bd82b719a0de Make CacheTimeCheck a singleton.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 38
diff changeset
59 }
bd82b719a0de Make CacheTimeCheck a singleton.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 38
diff changeset
60
32
7b19be62ea94 Remove yet another global, replace by CacheTimeCheck class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 27
diff changeset
61 array_push($this->files, $path);
7b19be62ea94 Remove yet another global, replace by CacheTimeCheck class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 27
diff changeset
62 $mtime = filemtime($path);
7b19be62ea94 Remove yet another global, replace by CacheTimeCheck class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 27
diff changeset
63 if ($mtime > $this->newest) {
7b19be62ea94 Remove yet another global, replace by CacheTimeCheck class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 27
diff changeset
64 $this->newest = $mtime;
7b19be62ea94 Remove yet another global, replace by CacheTimeCheck class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 27
diff changeset
65 }
7b19be62ea94 Remove yet another global, replace by CacheTimeCheck class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 27
diff changeset
66 }
7b19be62ea94 Remove yet another global, replace by CacheTimeCheck class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 27
diff changeset
67
68
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
68 function getNewest()
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
69 {
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
70 $newest = 0;
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
71 foreach ($this->parentCaches as $parent) {
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
72 $newest = max($newest, $parent->getNewest());
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
73 }
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
74 $newest = max($newest, $this->newest);
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
75 return $newest;
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
76 }
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
77 }
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
78
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
79 class ScriptIncludeCache extends FileCacheSet
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
80 {
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
81 private static $myInstance = 0;
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
82
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
83 protected function __construct($filename = False)
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
84 {
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
85 parent::__construct();
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
86 if ($filename)
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
87 $this->cache_time($filename);
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
88 $this->cache_time(__FILE__);
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
89 }
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
90
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
91 /**
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
92 * Generates a singleton instance of this CacheTimeCheck
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
93 *
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
94 * @param $filename an optional file to include in the cacheset
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
95 *
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
96 * @return a CacheTimeCheck object
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
97 */
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
98 function instance($filename = False)
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
99 {
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
100 if (! self::$myInstance)
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
101 self::$myInstance = new self($filename);
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
102 elseif ($filename)
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
103 self::$myInstance->cache_time($filename);
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
104 return self::$myInstance;
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
105 }
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
106
48
c6d0892f81ff Documentation.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 47
diff changeset
107 /**
c6d0892f81ff Documentation.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 47
diff changeset
108 * Convenience function to include a file, and add it to the cacheset.
c6d0892f81ff Documentation.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 47
diff changeset
109 *
c6d0892f81ff Documentation.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 47
diff changeset
110 * @param $path path of the file
c6d0892f81ff Documentation.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 47
diff changeset
111 * @param $basedir a directory to prepend to the path
c6d0892f81ff Documentation.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 47
diff changeset
112 */
40
fbbb82ced6de Fixes for CacheTimeCheck->includeOnce paths.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 39
diff changeset
113 function includeOnce($path, $basedir = false)
32
7b19be62ea94 Remove yet another global, replace by CacheTimeCheck class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 27
diff changeset
114 {
40
fbbb82ced6de Fixes for CacheTimeCheck->includeOnce paths.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 39
diff changeset
115 if ($basedir)
fbbb82ced6de Fixes for CacheTimeCheck->includeOnce paths.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 39
diff changeset
116 $path = $basedir . "/" . $path;
32
7b19be62ea94 Remove yet another global, replace by CacheTimeCheck class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 27
diff changeset
117 $this->cache_time($path);
7b19be62ea94 Remove yet another global, replace by CacheTimeCheck class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 27
diff changeset
118 include_once($path);
16
a64e8f968e7e Fast abort if cachehit.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 15
diff changeset
119 }
68
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
120 }
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
121
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
122 /**
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
123 * CacheTimeCheck provides a set of functions to enable generating a
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
124 * correct time for the latest update for a given file.
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
125 *
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
126 * @author Tom Fredrik Blenning Klaussen
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
127 */
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
128 class CacheTimeCheck extends FileCacheSet
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
129 {
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
130 function __construct($filename = False)
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
131 {
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
132 parent::__construct();
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
133 if ($filename)
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
134 $this->cache_time($filename);
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
135 $this->cache_time(__FILE__);
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
136 }
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
137
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
138 public function addParent($cache)
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
139 {
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
140 parent::addParent($cache);
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
141 }
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
142
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
143 /**
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
144 * Checks if a HTTP_IF_MODIFIED_SINCE header is set, if this file is
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
145 * newer, set a Last-Modified header, otherwise abort with an 304
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
146 * status code
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
147 */
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
148 function CheckHttpModified()
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
149 {
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
150 if (DEBUG_LEVEL >= VERBOSITY_DEBUG)
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
151 var_dump($_SERVER);
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
152
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
153 $gmdate_mod = gmdate('D, d M Y H:i:s', $this->getNewest()) . ' GMT';
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
154
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
155 if(array_key_exists('HTTP_IF_MODIFIED_SINCE', $_SERVER)) {
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
156 $HTTP_IF_MODIFIED_SINCE = $_SERVER['HTTP_IF_MODIFIED_SINCE'];
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
157 $if_modified_since = preg_replace('/;.*$/', '', $HTTP_IF_MODIFIED_SINCE);
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
158
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
159 if (strtotime($if_modified_since) >= $this->getNewest()) {
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
160 header("HTTP/1.0 304 Not Modified");
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
161 exit;
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
162 }
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
163 }
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
164
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
165 header("Last-Modified: $gmdate_mod");
4dfa3f6a2dc1 Modify CacheTimeCheck to have a common parent, and two different
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 65
diff changeset
166 }
38
42533600214b Rename cache_check.inc to CacheTimeCheck.inc.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 32
diff changeset
167
48
c6d0892f81ff Documentation.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 47
diff changeset
168 /**
c6d0892f81ff Documentation.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 47
diff changeset
169 * Convenience function to load a file, and add it to the cacheset
c6d0892f81ff Documentation.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 47
diff changeset
170 *
c6d0892f81ff Documentation.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 47
diff changeset
171 * @param $path path of the file
c6d0892f81ff Documentation.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 47
diff changeset
172 * @return the contents of the file
c6d0892f81ff Documentation.
Tom Fredrik Blenning Klaussen <bfg@blenning.no>
parents: 47
diff changeset
173 */
38
42533600214b Rename cache_check.inc to CacheTimeCheck.inc.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 32
diff changeset
174 function loadFile($path)
42533600214b Rename cache_check.inc to CacheTimeCheck.inc.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 32
diff changeset
175 {
42533600214b Rename cache_check.inc to CacheTimeCheck.inc.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 32
diff changeset
176 $this->cache_time($path);
42533600214b Rename cache_check.inc to CacheTimeCheck.inc.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 32
diff changeset
177 return loadFile($path);
42533600214b Rename cache_check.inc to CacheTimeCheck.inc.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 32
diff changeset
178 }
16
a64e8f968e7e Fast abort if cachehit.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 15
diff changeset
179 }
50
2d0cda52f43f Remove unused variable.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents: 48
diff changeset
180 ?>