APP 接口开发及读取静态缓存

 <?php
/**
* Description: App 接口
* Create date:2015-10-19 13:36
* Author: zhaoyingnan
**/
class Response
{
/**
* 综合方式
* @author zhaoyingnan 2015-10-19 11:24
* @param int $iCode 状态码
* @param string $sMsg 提示信息
* @param mix $mixData data
* @param string $sType 接口返回类型
* @return string
**/
static function show($iCode, $sMsg = '', $mixData = '', $sType = 'json')
{
if(!is_numeric($iCode))
return '';
$arData = array(
'code' => $iCode,
'message' => $sMsg,
'data' => $mixData
);
switch($sType)
{
case 'array':
echo '<pre>';
print_r($arData);
echo '</pre>';
break;
case 'xml':
self::xml($arData);
break;
default:
self::json($arData);
}
} /**
* json
* @author zhaoyingnan 2015-10-19 10:21
* @param array $arData
* @return string
**/
private function json($arData= array())
{
exit(json_encode($arData));
} /**
* xml
* @author zhaoyingnan 2015-10-19 10:21
* @param array $arData
* @return string
**/
private function xml($arData = array())
{
header('Content-Type:text/xml');
$sXml = '';
$sXml .= "<?xml version='1.0' encoding='UTF-8'?>\n";
$sXml .= "<root>\n";
$sXml .= self::xmlEncode($arData);
$sXml .= "</root>\n";
exit($sXml);
} /**
* xml encode
* @author zhaoyingnan 2015-10-19 11:10
* @param array $arData
* @return string
**/
private function xmlEncode($arData = array())
{
if(!$arData)
return '';
$sXml = $sAttr= '';
foreach($arData as $mKey => $mVal)
{
if(is_numeric($mKey))
{
$sAttr = " id='{$mKey}'";
$mKey = 'item';
}
$sXml .= is_array($mVal) ? self::xmlEncode($mVal) : "<{$mKey}{$sAttr}>{$mVal}</{$mKey}>";
}
return $sXml;
}
}
?>
 <?php
/**
* Description: 静态缓存
* Create date:2015-10-19 13:36
* Author: zhaoyingnan
**/
class file
{
private $sExt = '.txt'; /**
* 生成/删除/获取 缓存
* @author zhaoyingnan 2015-10-19 11:33
* @param string $sKey 文件名
* @param mix $mixValue 被缓存的数据(为''时表示获取缓存,为NUll时为删除缓存文件,否则为生成缓存)
* @param string $sPath 文件保存的路径
* @param int $iCacheTime 缓存时间(秒),0为永不过期
* @return boolean
**/
public function cacheData($sKey, $mixValue = '', $sPath = '/alidata/www/lianxi/file/', $iCacheTime = 0)
{
$sPath = rtrim($sPath, '/').'/';
$sFileName = $sPath.$sKey.$this->sExt;
//生成缓存文件
if($mixValue)
{
if(!is_dir($sPath))
mkdir($sPath, 0777);
$iCacheTime = sprintf('%011d', $iCacheTime);
return file_put_contents($sFileName, $iCacheTime.json_encode($mixValue));
} if(is_file($sFileName) && !$mixValue)
{
if(is_null($mixValue))
{
//删除缓存
return unlink($sFileName);
} //获取缓存
$sContent = file_get_contents($sFileName);
$iTime = intval(substr($sContent, 0, 11));
$sContent = substr($sContent, 11);
if($iTime != 0 && $iTime + filemtime($sFileName) < time())
{
//过期了,删除
unlink($sFileName);
return FALSE;
}
return $sContent;
}
else
{
return FALSE;
}
}
}
?>
 <?php
include 'response.php';
include 'file.php';
$_GET['format'] = isset($_GET['format']) && in_array($_GET['format'], array('xml', 'json', 'array')) ? $_GET['format'] : 'json';
$file = new File();
//删除缓存
//exit(var_dump($file->cacheData('index_cache', null))); if(!$sContent = $file->cacheData('index_cache'))
{
//echo "获取缓存失败\n";
//echo "获取数据\n";
$arData = array(
'id' => 1,
'name' => 'TeddyNan',
'sex' => 23,
array(
'nani'=>array(
'g'=>'gg',
2,
4
)
)
);
//echo "生成缓存\n"; $file->cacheData('index_cache', $arData, '/alidata/www/lianxi/file/', 0);
Response::show(0, 'success', $arData, $_GET['format']);
}
else
{
Response::show(0, 'success', json_decode($sContent, TRUE), $_GET['format']);
}
?>
上一篇:Lua与C的交互


下一篇:handsontable插件HOOK事件