diff options
-rw-r--r-- | phpBB/admin/pagestart.php | 2 | ||||
-rw-r--r-- | phpBB/common.php | 4 | ||||
-rw-r--r-- | phpBB/includes/acm/cache_file.php | 89 | ||||
-rw-r--r-- | phpBB/includes/functions.php | 2 | ||||
-rw-r--r-- | phpBB/includes/page_tail.php | 10 |
5 files changed, 58 insertions, 49 deletions
diff --git a/phpBB/admin/pagestart.php b/phpBB/admin/pagestart.php index b4359312ce..752a3bbfe7 100644 --- a/phpBB/admin/pagestart.php +++ b/phpBB/admin/pagestart.php @@ -131,7 +131,7 @@ function page_footer($copyright_html = true) if (!empty($cache)) { - $cache->save_cache(); + $cache->unload(); } exit; diff --git a/phpBB/common.php b/phpBB/common.php index 7a6b55c11a..f9bf10da9e 100644 --- a/phpBB/common.php +++ b/phpBB/common.php @@ -145,10 +145,12 @@ $user = new user(); $auth = new auth(); // Need these here so instantiate them now -$cache = new acm();// Experimental cache manager +$cache = new acm(); $template = new template(); $db = new sql_db($dbhost, $dbuser, $dbpasswd, $dbname, $dbport, false); +// 20030218 Ashe: $dbport is not set by the installer + // Grab global variables, re-cache if necessary if ($config = $cache->get('config')) { diff --git a/phpBB/includes/acm/cache_file.php b/phpBB/includes/acm/cache_file.php index d666007c86..816746e787 100644 --- a/phpBB/includes/acm/cache_file.php +++ b/phpBB/includes/acm/cache_file.php @@ -34,6 +34,39 @@ class acm $this->cache_dir = $phpbb_root_path . 'cache/'; } + function load() + { + global $phpEx; + @include($this->cache_dir . 'global.' . $phpEx); + } + + function unload() + { + $this->save(); + unset($this->vars); + unset($this->vars_ts); + unset($this->sql_rowset); + } + + function save() + { + if (!$this->modified) + { + return; + } + + global $phpEx; + $file = '<?php $this->vars=' . $this->format_array($this->vars) . ";\n\$this->vars_ts=" . $this->format_array($this->vars_ts) . ' ?>'; + + if ($fp = @fopen($this->cache_dir . 'global.' . $phpEx, 'wb')) + { + @flock($fp, LOCK_EX); + fwrite($fp, $file); + @flock($fp, LOCK_UN); + fclose($fp); + } + } + function tidy($expire_time = 0) { global $phpEx; @@ -41,11 +74,11 @@ class acm $dir = opendir($this->cache_dir); while ($entry = readdir($dir)) { - if ($entry{0} == '.') + if ($entry{0} == '.' || is_dir($this->cache_dir . $entry)) { continue; } - if (!$expire_time || time() - $expire_time >= filemtime($this->cache_dir . $entry)) + if (time() - $expire_time >= filemtime($this->cache_dir . $entry)) { unlink($this->cache_dir . $entry); } @@ -67,6 +100,11 @@ class acm } } + function get($varname, $expire_time = 0) + { + return ($this->exists($varname, $expire_time)) ? $this->vars[$varname] : NULL; + } + function put($varname, $var) { $this->vars[$varname] = $var; @@ -84,16 +122,11 @@ class acm } } - function get($varname, $expire_time = 0) - { - return ($this->exists($varname, $expire_time)) ? $this->vars[$varname] : null; - } - function exists($varname, $expire_time = 0) { if (!is_array($this->vars)) { - $this->load_cache(); + $this->load(); } if ($expire_time > 0) @@ -108,33 +141,6 @@ class acm return isset($this->vars[$varname]); } - function load_cache() - { - global $phpEx; - - $this->vars = array(); - @include($this->cache_dir . 'global.' . $phpEx); - } - - function save_cache() - { - if (!$this->modified) - { - return; - } - - global $phpEx; - $file = '<?php $this->vars=' . $this->format_array($this->vars) . ";\n\$this->vars_ts=" . $this->format_array($this->vars_ts) . ' ?>'; - - if ($fp = @fopen($this->cache_dir . 'global.' . $phpEx, 'wb')) - { - @flock($fp, LOCK_EX); - fwrite($fp, $file); - @flock($fp, LOCK_UN); - fclose($fp); - } - } - function format_array($array) { $lines = array(); @@ -163,24 +169,23 @@ class acm function sql_load($query) { global $db, $phpEx; - if (!file_exists($this->cache_dir . md5($query) . '.' . $phpEx)) + @include($this->cache_dir . md5($query) . '.' . $phpEx); + + if (!isset($rowset)) { - return false; + return FALSE; } - include($this->cache_dir . md5($query) . '.' . $phpEx); - $query_id = 'Cache id #' . count($this->sql_rowset); $this->sql_rowset[$query_id] = $rowset; $db->query_result = $query_id; - - return true; + return TRUE; } function sql_save($query, $result) { global $db, $phpEx; - if (@$fp = fopen($this->cache_dir . md5($query) . '.' . $phpEx, 'wb')) + if ($fp = @fopen($this->cache_dir . md5($query) . '.' . $phpEx, 'wb')) { @flock($fp, LOCK_EX); diff --git a/phpBB/includes/functions.php b/phpBB/includes/functions.php index 823e62febd..c9a0ac9876 100644 --- a/phpBB/includes/functions.php +++ b/phpBB/includes/functions.php @@ -741,7 +741,7 @@ function redirect($url) } if (isset($cache)) { - $cache->save_cache(); + $cache->unload(); } $server_protocol = ($config['cookie_secure']) ? 'https://' : 'http://'; diff --git a/phpBB/includes/page_tail.php b/phpBB/includes/page_tail.php index e0591dfa76..65a359acc2 100644 --- a/phpBB/includes/page_tail.php +++ b/phpBB/includes/page_tail.php @@ -22,6 +22,12 @@ // Close our DB connection. $db->sql_close(); +// Unload cache +if (!empty($cache)) +{ + $cache->unload(); +} + // Output page creation time if (defined('DEBUG')) { @@ -52,10 +58,6 @@ $template->assign_vars(array( )); -if (!empty($cache)) -{ - $cache->save_cache(); -} $template->display('body'); exit; |