接口调试:在线sql语句查看和性能优化.pdfVIP

  • 15
  • 0
  • 约4.87千字
  • 约 6页
  • 2017-06-05 发布于湖北
  • 举报

接口调试:在线sql语句查看和性能优化.pdf

接⼜调试:在线sql语句查看与性能优化 后台接⼜绝⼤数情况下,都需要与数据库进⾏交互,以获取业务数据或者接收保存 户端上报的数据。为⽅便后台开发同学进⾏调试,以及实时查看全部执⾏的SQL语 句,这⾥简单地对全部执⾏的SQL语句进⾏调试模式下输出。 2.13.1 开启SQL调试 开启调试模式很简单,但这⾥和通常的框架不⼀样,我们不是全部统⼀地开启调试模 式,因为在接⼜正常调⽤情况下返回⾮法的JSON会导致接⼜结果解析失败。故我们 通过添加调试参数来控制是否开启SQL调试。如下: //$vim ./Public/init.php //数据操作 - 基于NotORM DI()-notorm = function() { $ ebug = isset($_GET[ ebug]) ? true : false; return new PhalApi_DB_NotORM(DI()-config-get( bs), $ ebug }; 特别注意: 通常,我们的调试参数不应都简单地使⽤debug= 1,⽽是各 ⾃定义,如 复杂⼀点:__phalapi_debug__=1 ,或者再添加⼀个简单 的验签,额外带个参数校验,如: phalapisign__=202cb962ac59075b964b07 152d234b70 。减少暴露SQL 的 风险。 2.13.2 调试⽰例 回到前⾯获取⽤户基本信息接⼜ /dem /?service=User .GetBaseInf 的⽰例。 (1)正常情况下 请求: http:// ev ./ emo/?service=User.GetBaseInfouser_i =1 返回: {ret:200, ata:{co e:0,msg:,info:{i :1,name: og (2)带debug=1调试下 请求: http:// ev ./ emo/?service=User.GetBaseInfouser_i =1 返回: [1 - 0.00057s]SELECT * FROM tbl_user WHERE (i = ?); -- 1 {ret:200, ata:{co e:0,msg:,info:{i :1,name: og 2.13.3 ⼀个 误的接⼜开发 有时,在进⾏接⼜开发时,会需要进⾏批量获取的功能,如列表。但很多开发的同学 可能会因为时间赶或者没有意识去对SQL查询进⾏优化,或者甚⾄不知道⾃⼰的接⼜ 背后隐藏着多少问题。下⾯是⼀个错误的开发⽰例。 (1)新增的批量获取接⼜ 假设我们在开发⼀个国际的项⽬,并且运⾏良好,BOSS说因业务需要,要加多⼀个 接⼜以⽀持批量获取⽤户的基本信息,提供给国外某知名的社交平台调⽤。 于是乎,我们很快就根据原来的单个获取接⼜实现了新的接⼜: //$vim ./Demo/Api/User.php ?php class Api_User exten s PhalApi_Api { public function getRules() { return array( // ... getMultiBaseInfo = array( user_i s = array(name = user_i s, type ), ); } // ... public function getMultiBaseInfo() { $rs = array(co e = 0, msg = , list = array()); $ omain = new Domain_User(); foreach ($this-user_i s as $userI ) { $rs[list][] = $ omain-getBaseInfo($userI ); } return $rs; } } (2)运⾏调⽤⼀下 显然,我们可以很清楚地调⽤新增的接⼜: http:// ev ./ emo/?service=User.GetMultiBaseInfouser_i 可返回: { ret: 200,

文档评论(0)

1亿VIP精品文档

相关文档