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']);
}
?>
严正声明:本站只出售html页面效果模板,不提供任何类型的网站内容数据,模板仅供学习交流使用,不得用于任何商业以及触犯国家法律法规的用途,违者需自行承担全部责任,与本站无以及模板设计作者无关,本站以及模板作者不承担任何连带责任!!!!
关爱邦 | 网站源码程序下载_免费商业源码分享! » APP 接口开发及读取静态缓存

发表评论

提供最优质的资源集合

立即查看 了解详情