コード例 #1
0
ファイル: table.php プロジェクト: fchaose/qeephp
 /**
  * 设置当前数据表的元数据
  */
 protected function _setupMeta()
 {
     $table_name = $this->getFullTableName();
     $this->_cache_id = $this->_conn->getID() . '-' . $table_name;
     if (isset(self::$_meta[$this->_cache_id])) {
         return;
     }
     $cached = Q::getIni('db_meta_cached');
     if ($cached) {
         // 尝试从缓存读取
         $policy = array('encoding_filename' => true, 'serialize' => true, 'life_time' => Q::getIni('db_meta_lifetime'), 'cache_dir' => Q::getIni('runtime_cache_dir'));
         $backend = Q::getIni('db_meta_cache_backend');
         $data = Q::getCache($this->_cache_id, $policy, $backend);
         if (is_array($data) && !empty($data)) {
             self::$_meta[$this->_cache_id] = $data[0];
             self::$_fields[$this->_cache_id] = $data[1];
             return;
         }
     }
     // 从数据库获得 meta
     $meta = $this->_conn->metaColumns($table_name);
     $fields = array();
     foreach ($meta as $field) {
         $fields[$field['name']] = true;
     }
     self::$_meta[$this->_cache_id] = $meta;
     self::$_fields[$this->_cache_id] = $fields;
     $data = array($meta, $fields);
     if ($cached) {
         // 缓存数据
         Q::setCache($this->_cache_id, $data, $policy, $backend);
     }
 }