aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--phpBB/admin/pagestart.php2
-rw-r--r--phpBB/common.php4
-rw-r--r--phpBB/includes/acm/cache_file.php89
-rw-r--r--phpBB/includes/functions.php2
-rw-r--r--phpBB/includes/page_tail.php10
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;