<?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']);
}
?>

APP 接口开发及读取静态缓存的更多相关文章

  1. PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [3] 首页 APP 接口开发方案 ② 读取缓存方式

    以静态缓存为例. 修改 file.php line:11 去掉 path 参数(方便),加上缓存时间参数: public function cacheData($k,$v = '',$cacheTim ...

  2. PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [2] 首页 APP 接口开发方案 ① 读取数据库方式

    方案一:读取数据库方式 从数据库读取信息→封装→生成接口数据 应用场景: 数据时效性比较高的系统 方案二:读取缓存方式 从数据库获取信息(第一次设置缓存或缓存失效时)→封装(第一次设置缓存或缓存失效时 ...

  3. Dcloud课程4 如何进行APP接口开发

    Dcloud课程4 如何进行APP接口开发 一.总结 一句话总结:通过json或者xml. 1.APP如何进行通信? 通过在地址上接参数指明传递的数据的类型.而数据传递的类型一般是XML和json. ...

  4. app接口开发(php)

    1.JSON方式封装通信接口: 封装: response.php <?php // JSON方式封装通信接口 // 定义 response类 class Response { // 定义一个静态 ...

  5. app接口开发

    最近一段时间一直在做APP接口,总结一下APP接口开发过程中的注意事项: 1.效率:接口访问速度 APP有别于WEB服务,对服务器端要求是比较严格的,在移动端有限的带宽条件下,要求接口响应速度要快,所 ...

  6. PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [4] 首页 APP 接口开发方案 ③ 定时读取缓存方式

    用于 linux 执行 crontab 命令生成缓存的文件 crop.php <?php //让crontab 定时执行的脚本程序 require_once 'db.php'; require_ ...

  7. php做APP接口开发,接口的安全性

    1.当用户登录APP时,使用https协议调用后台相关接口,服务器端根据用户名和密码时生成一个access_key,并将access_key保存在session(或者保存在redis)中,将生成的ac ...

  8. 【APP接口开发】php输出json格式数据

    请一定配合使用null转空字符的方法一起使用:(_unsetNull() 和 _json() 配合使用) 在一些接口的调用中,直接查询数据库出来的字段可能为null字段,但是为了简便前端的判断,需要把 ...

  9. 【APP接口开发】php获取body数据

    PHP获取接口数据: $postStr = file_get_contents("php://input");//因为很多都设置了register_globals禁止,不能用$GL ...

随机推荐

  1. Json的序列化和反序列化

    1.利用js进行序列化成字符串和反序列化 var personObj = {name:"Tom",age:16}; // 利用JS序列化成字符串 var personStr = J ...

  2. sql server 2008出现评估期已过的问题

    我的sql server2008用来半年吧,那天的昨天还能用,到了180天后,就不能用了,具体问题如下: 出了这个问题后,就打不开sql server了 解决方法: 1.打开安装中心,升级sql se ...

  3. ahjesus配置vsftpd和xinetd

    vsftpd的简单配置参考此教程 传送门 教程内xinetd的配置失效, 用xinetd方式启动ftp方式如下 1.在/etc/xinetd.d/目录中创建一个文件vsftpd 内容如下: servi ...

  4. 安全协议:SSL、TSL、SSH概述

    SSL(Secure Socket Layer--安全套接字层):为网络通信安全以及数据完整性提供保障的一种安全协议,在TCP/IP的传输层对网络连接进行加密: TSL(Transport Layer ...

  5. uploadify API

    apifunctionjavascriptflashsecurity服务器 属性: uploader : uploadify.swf 文件的相对路径,该swf文件是一个带有文字BROWSE的按钮,点击 ...

  6. styleCop

    1styleCop安装 安装参考 2和VS集成 要和vs集成一定要在安装时把MSBuild files那个选项选中的,否则安装后是不会和VS集成集成的. 3styleCop使用 User Guide ...

  7. ssh无法登录linux服务器的解决办法

    最近之前使用的一台linux服务器被长官重装系统了,导致ssh登录的时候出现如下错误: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ...

  8. Sharepoint学习笔记—习题系列--70-573习题解析 -(Q35-Q39)

    Question 35You have a custom Web Part that is deployed as a sandboxed solution.You need to ensure th ...

  9. VCenter克隆虚拟机报错msg.snapshot.error-QUIESCINGERROR

    参考文献: http://www.mrtechjunkie.com/error-occurred-taking-snapshot-msg-snapshot-error-quiescingerror/ ...

  10. 【转】handler.removeCallbacks失效问题

    package com.example.demoactivity; import android.app.Activity; import android.os.Bundle; import andr ...