/** * Execute SQL query * * @param string $sql_statement * @param int $cacheMinutes (in minutes) -1 - Unlimited, 0 - Turned off, >0 for given amount of minutes * @return MySqlQueryMemcache */ public function exec($sqlStatement, $cacheMinutes = 0, $cacheTag = null) { if ($cacheMinutes === null) { $cacheMinutes = $this->findDefaultMemcacheConfig(); } $this->is_result_cached = false; if ($this->memcache !== null and $cacheMinutes != 0) { $cache = $this->memcache->get($this->getMemcacheKey($sqlStatement, $cacheTag)); if ($cache !== false and is_array($cache)) { $this->result = $cache; $this->is_result_cached = true; $this->last_fetch_type = ''; $this->last_field_position = 0; $this->last_record_position = 0; return $this; } else { parent::exec($sqlStatement); $resultset = parent::fetchRecords(); if ($cacheMinutes > 0) { $memcache_expire_time = time() + $cacheMinutes * 60; } elseif ($cacheMinutes == -1) { $memcache_expire_time = 0; } $this->memcache->set($this->getMemcacheKey($sqlStatement, $cacheTag), $resultset, $memcache_expire_time); return $this; } } else { return parent::exec($sqlStatement); } }
/** * Execute SQL query * * @param string $sql_statement * @param int $cache_time (in minutes) * @return MySqlQueryMemcache */ public function exec($sqlStatement, $cacheMinutes = 0) { if ($cacheMinutes === null) { $cacheMinutes = $this->findDefaultMemcacheConfig(); } $this->is_result_cached = false; if ($this->memcache !== null and ($cacheMinutes > 0 or $cacheMinutes == -1)) { $cache = $this->memcache->get($this->getPrefix() . ":" . md5($sqlStatement)); if (!empty($cache) and $cache["resultset"] !== null and ($cache["expires"] > time() or $cache["expires"] == -1)) { $this->result = $cache["resultset"]; $this->is_result_cached = true; $this->last_fetch_type = ''; $this->last_field_position = 0; $this->last_record_position = 0; return $this; } else { parent::exec($sqlStatement); $resultset = parent::fetchRecords(); if ($cacheMinutes > 0) { $expire_time = time() + $cacheMinutes * 60; $memcache_expire_time = time() + $cacheMinutes * 60; } elseif ($cacheMinutes == -1) { $expire_time = -1; $memcache_expire_time = 0; } $this->memcache->set($this->getPrefix() . ":" . md5($sqlStatement), array("expires" => $expire_time, "resultset" => $resultset), $memcache_expire_time); return $this; } } else { return parent::exec($sqlStatement); } }