Mercurial > SimpleWebPresenter
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 |
| 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 | 2 $baseDir = dirname(__FILE__); |
| 3 | |
|
65
7b87ec8b0842
Renamed logger to Logger.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
64
diff
changeset
|
4 include_once 'Logger.inc'; |
| 52 | 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 | 8 $cache->cache_time("${baseDir}/common-functions.inc"); |
| 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 | 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 ?> |
