爱程序网

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

来源: 阅读:

 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 ?>

 

关于爱程序网 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助