aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes/acm/acm_apc.php
diff options
context:
space:
mode:
authorDavid M <davidmj@users.sourceforge.net>2008-02-03 10:19:04 +0000
committerDavid M <davidmj@users.sourceforge.net>2008-02-03 10:19:04 +0000
commit7b262babcd5c862c3068b08da8bba5f48bd5f36a (patch)
tree5b25f810cc36b33ba6ff406dab76377551e7688e /phpBB/includes/acm/acm_apc.php
parente9e9e8e69c3aee47d5bfbc24b2fb9f335cddf36a (diff)
downloadforums-7b262babcd5c862c3068b08da8bba5f48bd5f36a.tar
forums-7b262babcd5c862c3068b08da8bba5f48bd5f36a.tar.gz
forums-7b262babcd5c862c3068b08da8bba5f48bd5f36a.tar.bz2
forums-7b262babcd5c862c3068b08da8bba5f48bd5f36a.tar.xz
forums-7b262babcd5c862c3068b08da8bba5f48bd5f36a.zip
Alright, this should give some improved performance :)
This is the end of random seek access to rows. If you have a compelling reason as to why they should stay, contact me. Else, they are gone forevermore... The following API calls are deprecated: acm::sql_rowseek() -> no replacement $db->sql_fetchfield($field, $rownum = false, $query_id = false) -> $db->sql_fetchfield($field, $query_id = false) Initial tests show that phpBB3 over four percent of memory against phpBB3.1 on an empty board. So far so good :) Other cool things: db2, MS SQL ODBC and MS SQL 2005 all use less memory because they do not need to reference the last executed query to handle random access seeks :) P.S. The crazy people using SVN: please report any issues with the new way we itterate through caches, I do not want to miss anything :) git-svn-id: file:///svn/phpbb/trunk@8372 89ea8834-ac86-4346-8a33-228a782c2dd0
Diffstat (limited to 'phpBB/includes/acm/acm_apc.php')
-rw-r--r--phpBB/includes/acm/acm_apc.php37
1 files changed, 4 insertions, 33 deletions
diff --git a/phpBB/includes/acm/acm_apc.php b/phpBB/includes/acm/acm_apc.php
index f168284d00..15f3705d9e 100644
--- a/phpBB/includes/acm/acm_apc.php
+++ b/phpBB/includes/acm/acm_apc.php
@@ -26,7 +26,6 @@ class acm
private $is_modified = false;
public $sql_rowset = array();
- private $sql_row_pointer = array();
public $cache_dir = '';
/**
@@ -62,11 +61,9 @@ class acm
$this->save();
unset($this->vars);
unset($this->sql_rowset);
- unset($this->sql_row_pointer);
$this->vars = array();
$this->sql_rowset = array();
- $this->sql_row_pointer = array();
}
/**
@@ -161,12 +158,10 @@ class acm
unset($this->vars);
unset($this->sql_rowset);
- unset($this->sql_row_pointer);
$this->vars = array();
$this->var_expires = array();
$this->sql_rowset = array();
- $this->sql_row_pointer = array();
$this->is_modified = false;
}
@@ -241,8 +236,6 @@ class acm
$this->sql_rowset[$query_id] = $temp;
- $this->sql_row_pointer[$query_id] = 0;
-
return $query_id;
}
@@ -287,7 +280,6 @@ class acm
// store them in the right place
$query_id = sizeof($this->sql_rowset);
$this->sql_rowset[$query_id] = array();
- $this->sql_row_pointer[$query_id] = 0;
while ($row = $db->sql_fetchrow($query_result))
{
@@ -305,12 +297,9 @@ class acm
*/
public function sql_fetchrow($query_id)
{
- if ($this->sql_row_pointer[$query_id] < sizeof($this->sql_rowset[$query_id]))
- {
- return $this->sql_rowset[$query_id][$this->sql_row_pointer[$query_id]++];
- }
+ list(, $row) = each($this->sql_rowset[$query_id]);
- return false;
+ return ($row !== NULL) ? $row : false;
}
/**
@@ -318,26 +307,9 @@ class acm
*/
public function sql_fetchfield($query_id, $field)
{
- if ($this->sql_row_pointer[$query_id] < sizeof($this->sql_rowset[$query_id]))
- {
- return (isset($this->sql_rowset[$query_id][$this->sql_row_pointer[$query_id]][$field])) ? $this->sql_rowset[$query_id][$this->sql_row_pointer[$query_id]][$field] : false;
- }
-
- return false;
- }
+ $row = current($this->sql_rowset[$query_id]);
- /**
- * Seek a specific row in an a cached database result (database)
- */
- public function sql_rowseek($rownum, $query_id)
- {
- if ($rownum >= sizeof($this->sql_rowset[$query_id]))
- {
- return false;
- }
-
- $this->sql_row_pointer[$query_id] = $rownum;
- return true;
+ return ($row !== false && isset($row[$field])) ? $row[$field] : false;
}
/**
@@ -351,7 +323,6 @@ class acm
}
unset($this->sql_rowset[$query_id]);
- unset($this->sql_row_pointer[$query_id]);
return true;
}