1 <?php 2 /** 3 * Description: App 接口 4 * Create date:2015-10-19 13:36 5 * Author: zhaoyingnan 6 **/ 7 class Response 8 { 9 /**10 * 综合方式11 * @author zhaoyingnan 2015-10-19 11:2412 * @param int $iCode 状态码13 * @param string $sMsg 提示信息 14 * @param mix $mixData data15 * @param string $sType 接口返回类型16 * @return string17 **/18 static function show($iCode, $sMsg = '', $mixData = '', $sType = 'json')19 { 20 if(!is_numeric($iCode))21 return ''; 22 $arData = array(23 'code' => $iCode,24 'message' => $sMsg,25 'data' => $mixData26 ); 27 switch($sType)28 { 29 case 'array':30 echo '<pre>';31 print_r($arData);32 echo '</pre>';33 break;34 case 'xml':35 self::xml($arData);36 break;37 default:38 self::json($arData);39 } 40 } 41 42 /** 43 * json44 * @author zhaoyingnan 2015-10-19 10:2145 * @param array $arData46 * @return string 47 **/48 private function json($arData= array())49 { 50 exit(json_encode($arData));51 } 52 53 /**54 * xml55 * @author zhaoyingnan 2015-10-19 10:2156 * @param array $arData57 * @return string 58 **/59 private function xml($arData = array())60 {61 header('Content-Type:text/xml');62 $sXml = '';63 $sXml .= "<?xml version='1.0' encoding='UTF-8'?>n";64 $sXml .= "<root>n";65 $sXml .= self::xmlEncode($arData);66 $sXml .= "</root>n";67 exit($sXml);68 }69 70 /**71 * xml encode72 * @author zhaoyingnan 2015-10-19 11:1073 * @param array $arData74 * @return string 75 **/76 private function xmlEncode($arData = array())77 {78 if(!$arData)79 return '';80 $sXml = $sAttr= '';81 foreach($arData as $mKey => $mVal)82 {83 if(is_numeric($mKey))84 {85 $sAttr = " id='{$mKey}'";86 $mKey = 'item';87 }88 $sXml .= is_array($mVal) ? self::xmlEncode($mVal) : "<{$mKey}{$sAttr}>{$mVal}</{$mKey}>";89 }90 return $sXml;91 }92 }93 ?>
1 <?php 2 /** 3 * Description: 静态缓存 4 * Create date:2015-10-19 13:36 5 * Author: zhaoyingnan 6 **/ 7 class file 8 { 9 private $sExt = '.txt';10 11 /** 12 * 生成/删除/获取 缓存13 * @author zhaoyingnan 2015-10-19 11:3314 * @param string $sKey 文件名15 * @param mix $mixValue 被缓存的数据(为''时表示获取缓存,为NUll时为删除缓存文件,否则为生成缓存)16 * @param string $sPath 文件保存的路径17 * @param int $iCacheTime 缓存时间(秒),0为永不过期 18 * @return boolean19 **/20 public function cacheData($sKey, $mixValue = '', $sPath = '/alidata/www/lianxi/file/', $iCacheTime = 0)21 { 22 $sPath = rtrim($sPath, '/').'/';23 $sFileName = $sPath.$sKey.$this->sExt;24 //生成缓存文件25 if($mixValue)26 { 27 if(!is_dir($sPath))28 mkdir($sPath, 0777);29 $iCacheTime = sprintf('%011d', $iCacheTime);30 return file_put_contents($sFileName, $iCacheTime.json_encode($mixValue));31 } 32 33 if(is_file($sFileName) && !$mixValue)34 { 35 if(is_null($mixValue))36 { 37 //删除缓存38 return unlink($sFileName);39 } 40 41 //获取缓存42 $sContent = file_get_contents($sFileName);43 $iTime = intval(substr($sContent, 0, 11));44 $sContent = substr($sContent, 11);45 if($iTime != 0 && $iTime + filemtime($sFileName) < time())46 { 47 //过期了,删除48 unlink($sFileName);49 return FALSE;50 } 51 return $sContent;52 }53 else54 {55 return FALSE;56 }57 }58 }59 ?>
1 <?php 2 include 'response.php'; 3 include 'file.php'; 4 $_GET['format'] = isset($_GET['format']) && in_array($_GET['format'], array('xml', 'json', 'array')) ? $_GET['format'] : 'json'; 5 $file = new File(); 6 //删除缓存 7 //exit(var_dump($file->cacheData('index_cache', null))); 8 9 if(!$sContent = $file->cacheData('index_cache'))10 {11 //echo "获取缓存失败n";12 //echo "获取数据n";13 $arData = array(14 'id' => 1, 15 'name' => 'TeddyNan',16 'sex' => 23, 17 array(18 'nani'=>array(19 'g'=>'gg',20 2, 21 4 22 ) 23 ) 24 ); 25 //echo "生成缓存n";26 27 $file->cacheData('index_cache', $arData, '/alidata/www/lianxi/file/', 0); 28 Response::show(0, 'success', $arData, $_GET['format']);29 }30 else31 {32 Response::show(0, 'success', json_decode($sContent, TRUE), $_GET['format']);33 }34 ?>