php开发app接口

JerryXia 发表于 , 阅读 (2)

纯字符串
php实现json: json_encode()/json_decoe(), 这个函数只能接收 utf8 编码的数据, 其他编码会返回null

编码转换: iconv($code_s, $code_d, $str)

json 实现会简单很多, xml会复杂一些, 作者喜欢使用 直接拼接字符串 的方式来实现, 但要注意 对数组数据的处理 以及 使用header()指定返回xml格式

缓存

实际过程: 1. 生成缓存(写入数据到文件); 2. 获取缓存(读取文件); 3. 删除缓存(删除文件)

  • memcache/redis
  1. 都是用来管理数据
  2. 数据都是存放在内存里
  3. redis定期将数据备份到磁盘(持久化)
  4. memcache只是简单的k-v格式
  5. redis支持 k-v, list, set, hash 等数据结构存储

mysql数据库操作: mysql服务器 -> 客户端连接 -> 发送sql -> mysql服务器返回响应数据

redis/memchche操作: 安装相应服务的服务器 -> 客户端连接 -> set/get命令 -> 服务器返回数据

  • php操作redis/memcache

通过phpredis扩展, 默认是安装并开启的

$redis = new Redis();$redis->connect($host, $port);$redis->set($key, $val);$redis->setex($key, $time, $val); // 设置缓存时间$redis->get($key);

最后一部分是定时任务, 即 cron, 目测就遇到一个坑: 没有加入path, 导致设置的perl命令没有运行

举个栗子

单例模式: 1. 业务需要(如数据库); 2. 将 __construct() 设置为静态方法, 使用 getInstance() 新建/获取 类的实例

  • app接口请求数据

方案1: 直接数据库中读取
方案2: 将读取的数据缓存一份, 并设置失效时间, 再次请求的时候先查看是否存在缓存
方案3: 使用 cron 将数据库中的数据读取到缓存, 请求的时候直接读取缓存中的内容

给的方案是将缓存时间写到缓存文件, 比较的时候先读取缓存然后使用, 个人认为缓存自己有可以设置失效时间, 不需要自己这样处理的.

  • app版本升级

设计: 1. 检测是否需要更新; 2. 用户点击更新, 请求服务器; 3. 下载最新app
数据表设计: app_id(设备, 安卓, ios, pad等), version_id(客户端版本)

注意: 1. 需要加密数据

测试post提交: 直接写html文件

  • app错误日志接口

日志内容: 设备/版本/错误日志

个人总结

php使用 json/xml/memcache/redis 等知识
对app接口有一个简单的概念: app发送http请求 -> 对应接口相应请求并返回数据