Mercurial > SimpleWebPresenter
annotate CacheTimeCheck.inc @ 47:66382989353f
Extract baseDir only once.
Function for generating cacheset.
Added logger functionality.
Removed hardcoded location for flagScript.
BUGFIX: masterdocument was not added to the cacheset.
BUGFIX: When two options existed next to eachother, the last was not
read.
| author | Tom Fredrik "BFG" Klaussen <bfg@blenning.no> |
|---|---|
| date | Mon, 08 Oct 2012 17:35:08 +0200 |
| parents | fbbb82ced6de |
| children | c6d0892f81ff |
| 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 |
|
32
7b19be62ea94
Remove yet another global, replace by CacheTimeCheck class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
27
diff
changeset
|
2 class CacheTimeCheck |
|
14
91ee5f49907e
Correct caching.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
6
diff
changeset
|
3 { |
|
32
7b19be62ea94
Remove yet another global, replace by CacheTimeCheck class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
27
diff
changeset
|
4 private $newest; |
|
7b19be62ea94
Remove yet another global, replace by CacheTimeCheck class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
27
diff
changeset
|
5 private $files = array(); |
|
39
bd82b719a0de
Make CacheTimeCheck a singleton.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
38
diff
changeset
|
6 private static $myInstance = 0; |
|
6
6c0162497d56
Improved error reporting, and support for multilevel params.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
0
diff
changeset
|
7 |
|
39
bd82b719a0de
Make CacheTimeCheck a singleton.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
38
diff
changeset
|
8 private function __construct($filename = False) |
|
32
7b19be62ea94
Remove yet another global, replace by CacheTimeCheck class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
27
diff
changeset
|
9 { |
|
7b19be62ea94
Remove yet another global, replace by CacheTimeCheck class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
27
diff
changeset
|
10 if ($filename) |
|
39
bd82b719a0de
Make CacheTimeCheck a singleton.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
38
diff
changeset
|
11 $this->cache_time($filename); |
|
32
7b19be62ea94
Remove yet another global, replace by CacheTimeCheck class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
27
diff
changeset
|
12 $this->cache_time(__FILE__); |
|
7b19be62ea94
Remove yet another global, replace by CacheTimeCheck class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
27
diff
changeset
|
13 } |
|
0
d2da64705bce
Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
14 |
|
47
66382989353f
Extract baseDir only once.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
40
diff
changeset
|
15 function cacheSet($humanReadable = False) |
|
66382989353f
Extract baseDir only once.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
40
diff
changeset
|
16 { |
|
66382989353f
Extract baseDir only once.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
40
diff
changeset
|
17 $retVal = array(); |
|
66382989353f
Extract baseDir only once.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
40
diff
changeset
|
18 foreach($this->files as $file) { |
|
66382989353f
Extract baseDir only once.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
40
diff
changeset
|
19 $mtime = filemtime($file); |
|
66382989353f
Extract baseDir only once.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
40
diff
changeset
|
20 if ($humanReadable) |
|
66382989353f
Extract baseDir only once.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
40
diff
changeset
|
21 $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
|
22 |
|
66382989353f
Extract baseDir only once.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
40
diff
changeset
|
23 $retVal[$file] = $mtime; |
|
66382989353f
Extract baseDir only once.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
40
diff
changeset
|
24 } |
|
66382989353f
Extract baseDir only once.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
40
diff
changeset
|
25 return $retVal; |
|
66382989353f
Extract baseDir only once.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
40
diff
changeset
|
26 } |
|
66382989353f
Extract baseDir only once.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
40
diff
changeset
|
27 |
|
39
bd82b719a0de
Make CacheTimeCheck a singleton.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
38
diff
changeset
|
28 function instance($filename = False) |
|
bd82b719a0de
Make CacheTimeCheck a singleton.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
38
diff
changeset
|
29 { |
|
bd82b719a0de
Make CacheTimeCheck a singleton.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
38
diff
changeset
|
30 if (! self::$myInstance) |
|
bd82b719a0de
Make CacheTimeCheck a singleton.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
38
diff
changeset
|
31 self::$myInstance = new self($filename); |
|
bd82b719a0de
Make CacheTimeCheck a singleton.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
38
diff
changeset
|
32 elseif ($filename) |
|
bd82b719a0de
Make CacheTimeCheck a singleton.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
38
diff
changeset
|
33 self::$myInstance->cache_time($filename); |
|
bd82b719a0de
Make CacheTimeCheck a singleton.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
38
diff
changeset
|
34 return self::$myInstance; |
|
bd82b719a0de
Make CacheTimeCheck a singleton.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
38
diff
changeset
|
35 } |
|
bd82b719a0de
Make CacheTimeCheck a singleton.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
38
diff
changeset
|
36 |
|
32
7b19be62ea94
Remove yet another global, replace by CacheTimeCheck class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
27
diff
changeset
|
37 function CheckHttpModified() |
|
7b19be62ea94
Remove yet another global, replace by CacheTimeCheck class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
27
diff
changeset
|
38 { |
|
39
bd82b719a0de
Make CacheTimeCheck a singleton.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
38
diff
changeset
|
39 if (DEBUG_LEVEL >= VERBOSITY_DEBUG) |
|
32
7b19be62ea94
Remove yet another global, replace by CacheTimeCheck class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
27
diff
changeset
|
40 var_dump($_SERVER); |
|
7b19be62ea94
Remove yet another global, replace by CacheTimeCheck class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
27
diff
changeset
|
41 |
|
7b19be62ea94
Remove yet another global, replace by CacheTimeCheck class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
27
diff
changeset
|
42 $gmdate_mod = gmdate('D, d M Y H:i:s', $this->newest) . ' GMT'; |
|
40
fbbb82ced6de
Fixes for CacheTimeCheck->includeOnce paths.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
39
diff
changeset
|
43 |
|
39
bd82b719a0de
Make CacheTimeCheck a singleton.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
38
diff
changeset
|
44 if(array_key_exists('HTTP_IF_MODIFIED_SINCE', $_SERVER)) { |
|
bd82b719a0de
Make CacheTimeCheck a singleton.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
38
diff
changeset
|
45 $HTTP_IF_MODIFIED_SINCE = $_SERVER['HTTP_IF_MODIFIED_SINCE']; |
|
bd82b719a0de
Make CacheTimeCheck a singleton.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
38
diff
changeset
|
46 $if_modified_since = preg_replace('/;.*$/', '', $HTTP_IF_MODIFIED_SINCE); |
|
32
7b19be62ea94
Remove yet another global, replace by CacheTimeCheck class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
27
diff
changeset
|
47 |
|
39
bd82b719a0de
Make CacheTimeCheck a singleton.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
38
diff
changeset
|
48 if (strtotime($if_modified_since) >= $this->newest) { |
|
bd82b719a0de
Make CacheTimeCheck a singleton.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
38
diff
changeset
|
49 header("HTTP/1.0 304 Not Modified"); |
|
bd82b719a0de
Make CacheTimeCheck a singleton.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
38
diff
changeset
|
50 exit; |
|
bd82b719a0de
Make CacheTimeCheck a singleton.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
38
diff
changeset
|
51 } |
|
32
7b19be62ea94
Remove yet another global, replace by CacheTimeCheck class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
27
diff
changeset
|
52 } |
|
39
bd82b719a0de
Make CacheTimeCheck a singleton.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
38
diff
changeset
|
53 |
|
32
7b19be62ea94
Remove yet another global, replace by CacheTimeCheck class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
27
diff
changeset
|
54 header("Last-Modified: $gmdate_mod"); |
|
14
91ee5f49907e
Correct caching.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
6
diff
changeset
|
55 } |
|
16
a64e8f968e7e
Fast abort if cachehit.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
15
diff
changeset
|
56 |
|
40
fbbb82ced6de
Fixes for CacheTimeCheck->includeOnce paths.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
39
diff
changeset
|
57 function cache_time($path, $basedir = False) |
|
32
7b19be62ea94
Remove yet another global, replace by CacheTimeCheck class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
27
diff
changeset
|
58 { |
|
39
bd82b719a0de
Make CacheTimeCheck a singleton.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
38
diff
changeset
|
59 if (!file_exists($path)) { |
|
47
66382989353f
Extract baseDir only once.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
40
diff
changeset
|
60 warn("${path} does not exist"); |
|
39
bd82b719a0de
Make CacheTimeCheck a singleton.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
38
diff
changeset
|
61 errorPage("Resource not available"); |
|
bd82b719a0de
Make CacheTimeCheck a singleton.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
38
diff
changeset
|
62 } |
|
bd82b719a0de
Make CacheTimeCheck a singleton.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
38
diff
changeset
|
63 |
|
32
7b19be62ea94
Remove yet another global, replace by CacheTimeCheck class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
27
diff
changeset
|
64 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
|
65 $mtime = filemtime($path); |
|
7b19be62ea94
Remove yet another global, replace by CacheTimeCheck class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
27
diff
changeset
|
66 if ($mtime > $this->newest) { |
|
7b19be62ea94
Remove yet another global, replace by CacheTimeCheck class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
27
diff
changeset
|
67 $this->newest = $mtime; |
|
7b19be62ea94
Remove yet another global, replace by CacheTimeCheck class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
27
diff
changeset
|
68 } |
|
7b19be62ea94
Remove yet another global, replace by CacheTimeCheck class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
27
diff
changeset
|
69 } |
|
7b19be62ea94
Remove yet another global, replace by CacheTimeCheck class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
27
diff
changeset
|
70 |
|
40
fbbb82ced6de
Fixes for CacheTimeCheck->includeOnce paths.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
39
diff
changeset
|
71 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
|
72 { |
|
40
fbbb82ced6de
Fixes for CacheTimeCheck->includeOnce paths.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
39
diff
changeset
|
73 if ($basedir) |
|
fbbb82ced6de
Fixes for CacheTimeCheck->includeOnce paths.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
39
diff
changeset
|
74 $path = $basedir . "/" . $path; |
|
32
7b19be62ea94
Remove yet another global, replace by CacheTimeCheck class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
27
diff
changeset
|
75 $this->cache_time($path); |
|
7b19be62ea94
Remove yet another global, replace by CacheTimeCheck class.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
27
diff
changeset
|
76 include_once($path); |
|
16
a64e8f968e7e
Fast abort if cachehit.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
15
diff
changeset
|
77 } |
|
38
42533600214b
Rename cache_check.inc to CacheTimeCheck.inc.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
32
diff
changeset
|
78 |
|
42533600214b
Rename cache_check.inc to CacheTimeCheck.inc.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
32
diff
changeset
|
79 function loadFile($path) |
|
42533600214b
Rename cache_check.inc to CacheTimeCheck.inc.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
32
diff
changeset
|
80 { |
|
42533600214b
Rename cache_check.inc to CacheTimeCheck.inc.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
32
diff
changeset
|
81 $this->cache_time($path); |
|
42533600214b
Rename cache_check.inc to CacheTimeCheck.inc.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
32
diff
changeset
|
82 return loadFile($path); |
|
42533600214b
Rename cache_check.inc to CacheTimeCheck.inc.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
32
diff
changeset
|
83 } |
|
16
a64e8f968e7e
Fast abort if cachehit.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
15
diff
changeset
|
84 } |
|
0
d2da64705bce
Refactored everything in the CMS into this repos.
Tom Fredrik "BFG" Klaussen <bfg@blenning.no>
parents:
diff
changeset
|
85 ?> |
