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:24
12 * @param int $iCode 状态码
13 * @param string $sMsg 提示信息
14 * @param mix $mixData data
15 * @param string $sType 接口返回类型
16 * @return string
17 **/
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' => $mixData
26 );
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 * json
44 * @author zhaoyingnan 2015-10-19 10:21
45 * @param array $arData
46 * @return string
47 **/
48 private function json($arData= array())
49 {
50 exit(json_encode($arData));
51 }
52
53 /**
54 * xml
55 * @author zhaoyingnan 2015-10-19 10:21
56 * @param array $arData
57 * @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 encode
72 * @author zhaoyingnan 2015-10-19 11:10
73 * @param array $arData
74 * @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:33
14 * @param string $sKey 文件名
15 * @param mix $mixValue 被缓存的数据(为''时表示获取缓存,为NUll时为删除缓存文件,否则为生成缓存)
16 * @param string $sPath 文件保存的路径
17 * @param int $iCacheTime 缓存时间(秒),0为永不过期
18 * @return boolean
19 **/
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 else
54 {
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 else
31 {
32 Response::show(0, 'success', json_decode($sContent, TRUE), $_GET['format']);
33 }
34 ?>