public static function sql_exec($params, &$smarty) { global $_G; if (!empty($params['sql']) && System::$db) { // 创建目录 $base = create_dir(VI_ROOT . 'cache/dataset/sql/'); // 缓存地址 $file = $base . md5($params['sql']) . ".php"; ////////////////////// //检查缓存是否有效 if ($params['cache'] && file_exists($file) && time() - filemtime($file) <= $params['cache'] * 60) { $result = unserialize(file_get_contents($file)); } else { switch ($params['type']) { case 'value': $result = System::$db->getValue($params['sql']); break; case 'first': $result = System::$db->getOne($params['sql']); break; default: case 'multi': $result = System::$db->getAll($params['sql']); break; } ////////////////////// if ($params['jsonde']) { $params['jsonde'] = explode(',', $params['jsonde']); } if ($params['serialize']) { $params['serialize'] = explode(',', $params['serialize']); } if ($result !== FALSE) { switch ($params['type']) { case 'first': $result = Cached::format($result, $params); break; default: case 'multi': foreach ($result as &$row) { $row = Cached::format($row, $params); } break; } } } ////////////////////// if ($params['cache']) { create_file($file, serialize($result)); } ////////////////////// $smarty->assign($params['assign'], $result); } }