php高性能接口怎么设计php
php接口设计要考虑性能,这样才能有效面对高并发的状况,下面来讲说PHP接口优化提升性能的几条技巧。sql
1、服务器数据库
从配置上作提高,对于系统总体的执行效率是至关明显的,这一点没有什么好质疑的,只要有实力,天然就能够多在这方面作提高了。数组
2、数据查询缓存
这个查询的优化,涉及sql的优化,或者到数据库的优化,下面有几个简单的优化方案。服务器
1. sql的优化,适当使用链表查询,使用链接(JOIN)来代替子查询,通常大表和多表的状况避免使用JOIN,这种状况下使用JOIN反而达不到简化查询的效果。并发
2. sql的优化,查询表数据时精确字段名进行查询,避免没必要要的字段查询。函数
3. sql的优化,适当使用主外键和索引,索引字段的查询效率在大表查询的效率对比至关明细。可是针对对索引得使用,稍做备注。索引在不少状况下是会失效得,好比,索引列得字段内容若总体占比过大,那这个索引也就没什么做用了;not in ,not exist 中也是无效得;对索引列进行运算.须要创建函数索引等高并发
4. sql的优化,适当使用in查询,尽可能少用,最好用union代替,效率会明显高 。 用in时,尽可能使用索引字段。sql的优化,适当使用模糊查询。最好不用,替换成全等,由于模糊中没法用索引性能
5. 数据库的优化,字段使用合理的字段类型,另一个提升效率的方法是在可能的状况下,应该尽可能把字段设置为NOTNULL,避免空间浪费。
6. 数据库的优化,合理设计表结构。好比,有时多些必要得冗余得字段,要好过连表查询。
7. 数据库的优化,合理设计索引,在联表查询或条件筛选中,数据表增长索引后查询的效率会快特别多。
3、代码优化
代码上的优化也是因人而异的,每一个人可能编码习惯和风格不一样,对于提升代码性能有各自的看法,如下是个人部分见解。
1. foreach合理使用,尽可能少在循环中套用循环,在循环次数过多的状况下,很是耗性能。
2. 循环中,尽可能避免数据操做,特别是查询操做,在循环次数过多的状况下,屡次调用效率很低,可一次获取数据再拼接。
3. 同理,在循环中,避免配置的屡次获取,和time()函数方法的调用,这种一次声明就能够重复使用。
4. 在php中,单引号和双引号是有区别的,做为一种习惯字符串我都用单引号,由于它无需编译,对于效率,可能谈不上差别大小,可能就一点点
5. 合理利用在php中的函数,像数组函数就很是丰富,要充分利用,通常不要本身去作他自己就支持的函数方法
6. 能够用上字典的概念,将数组以新索引形式存储起来,我在数据的重组中很经常使用
7. 根据场景,合理使用缓存能够减小重复的数据查询,提升效率
8. 合理拆分功能,好比一个列表查询,并带有详情查看,能够将此处拆成两个接口实现,在须要时获取数据,减小资源浪费。
4、业务逻辑优化
跟响应无关的程序(如记录日志等)耗时过多,使用fastcgi_finish_request()函数冲刷(flush)全部响应的数据给客户端并结束请求, 这使得客户端结束链接后,须要大量时间运行的任务可以继续运行,且不影响响应客户端的时音。
`echo` `'例子:'``;` `file_put_contents``(``'log.txt'``,` `date``(``'Y-m-d H:i:s'``) .` `" 上传视频\n"``, FILE_APPEND);` `fastcgi_finish_request();` `sleep(1);` `file_put_contents``(``'log.txt'``,` `date``(``'Y-m-d H:i:s'``) .` `" 转换格式\n"``, FILE_APPEND);` `sleep(1);` `file_put_contents``(``'log.txt'``,` `date``(``'Y-m-d H:i:s'``) .` `" 提取图片\n"``, FILE_APPEND);`