diff options
author | David M <davidmj@users.sourceforge.net> | 2008-02-03 10:19:04 +0000 |
---|---|---|
committer | David M <davidmj@users.sourceforge.net> | 2008-02-03 10:19:04 +0000 |
commit | 7b262babcd5c862c3068b08da8bba5f48bd5f36a (patch) | |
tree | 5b25f810cc36b33ba6ff406dab76377551e7688e /phpBB/includes/acm/acm_apc.php | |
parent | e9e9e8e69c3aee47d5bfbc24b2fb9f335cddf36a (diff) | |
download | forums-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.php | 37 |
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; } |