Exemplo n.º 1
0
 /**
  * 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);
     }
 }