Ejemplo n.º 1
0
 /**
  * Версия load_object_list работающая с кешем
  *
  * @param boolean|string $key        поле выступающее в качестве ключа для ассоциативного массива результата
  * @param int            $cache_time Время жизни кэша
  *
  * @return array ассоциативный или обычный массив результатов
  */
 public function load_object_list_cache($key = false, $cache_time = 86400)
 {
     $cache = new joosCache();
     $cache_key = md5($this->_sql);
     if (($value = $cache->get($cache_key)) === NULL) {
         if (!($cur = $this->query())) {
             return null;
         }
         $value = array();
         while ($row = mysqli_fetch_object($cur)) {
             if ($key) {
                 $value[$row->{$key}] = $row;
             } else {
                 $value[] = $row;
             }
         }
         $this->free_result();
         $cache->set($cache_key, $value, $cache_time);
     }
     return $value;
 }
Ejemplo n.º 2
0
 /**
  * Кэширующая обертка над фунцией find
  *
  * @param  array   $params     Параметры к методу find
  * @param  int     $cache_time Время кэширования
  * @return boolean Найденный объект
  *
  * @todo проверить обоснованность использования $find_result
  */
 public function find_cache(array $params = array('select' => '*'), $cache_time = 86400)
 {
     $cache = joosCache::instance();
     $key = md5($this->get_find_query_from_params($params));
     if (($value = $cache->get($key)) === NULL) {
         $find_result = $this->find($params);
         //в кэше надо хранить не только значение, но еще и результат поиска
         $cache->set($key, array($find_result, $this->to_cache()), $cache_time);
     } else {
         //достаем объект и мэппим его поля на текущий объект
         list($find_result, $obj) = $value;
         foreach ($obj as $k => $v) {
             $this->{$k} = $v;
         }
     }
     return $find_result;
 }