Fix performance of rcube_db_mysql::get_variable()

As currently we're using this to find only max_allowed_packet value,
it is better to use "SHOW VARIABLES LIKE ?" instead of asking for all variables.
pull/254/merge
Aleksander Machniak 10 years ago
parent 13e0a6556f
commit c7b77b9179

@ -9,6 +9,7 @@ CHANGELOG Roundcube Webmail
- Fix setting max packet size for DB caches and check packet size also in shared cache - Fix setting max packet size for DB caches and check packet size also in shared cache
- Fix needless security warning on BMP attachments display (#1490282) - Fix needless security warning on BMP attachments display (#1490282)
- Fix handling of some improper constructs in format=flowed text as per the RFC3676[4.5] (#1490284) - Fix handling of some improper constructs in format=flowed text as per the RFC3676[4.5] (#1490284)
- Fix performance of rcube_db_mysql::get_variable()
RELEASE 1.1.0 RELEASE 1.1.0
------------- -------------

@ -161,15 +161,24 @@ class rcube_db_mysql extends rcube_db
{ {
if (!isset($this->variables)) { if (!isset($this->variables)) {
$this->variables = array(); $this->variables = array();
}
if (array_key_exists($varname, $this->variables)) {
return $this->variables[$varname];
}
$result = $this->query('SHOW VARIABLES'); $result = $this->query('SHOW VARIABLES LIKE ?', $varname);
while ($row = $this->fetch_array($result)) { while ($row = $this->fetch_array($result)) {
$this->variables[$row[0]] = $row[1]; $this->variables[$row[0]] = $row[1];
} }
// not found, use default
if (!isset($this->variables[$varname])) {
$this->variables[$varname] = $default;
} }
return isset($this->variables[$varname]) ? $this->variables[$varname] : $default; return $this->variables[$varname];
} }
/** /**

Loading…
Cancel
Save