php高性能接口怎么设计

逆熵闭包
• 阅读 136

php高性能接口怎么设计
php高性能接口怎么设计

php接口设计要考虑性能,这样才能有效面对高并发的情况,下面来说说PHP接口优化提高性能的几条技巧。

一、服务器

从配置上做提升,对于系统整体的执行效率是相当明显的,这一点没有什么好质疑的,只要有实力,自然就可以多在这方面做提升了。

二、数据查询

这个查询的优化,涉及sql的优化,或者到数据库的优化,下面有几个简单的优化方案。

1. sql的优化,适当使用链表查询,使用连接(JOIN)来代替子查询,一般大表和多表的情况避免使用JOIN,这种情况下使用JOIN反而达不到简化查询的效果。

2. sql的优化,查询表数据时精确字段名进行查询,避免不必要的字段查询。

3. sql的优化,适当使用主外键和索引,索引字段的查询效率在大表查询的效率对比相当明细。但是针对对索引得使用,稍作备注。索引在很多情况下是会失效得,比如,索引列得字段内容若整体占比过大,那这个索引也就没什么作用了;not in ,not exist 中也是无效得;对索引列进行运算.需要建立函数索引等

4. sql的优化,适当使用in查询,尽量少用,最好用union代替,效率会明显高 。 用in时,尽量使用索引字段。sql的优化,适当使用模糊查询。最好不用,替换成全等,因为模糊中无法用索引

5. 数据库的优化,字段使用合理的字段类型,另外一个提高效率的方法是在可能的情况下,应该尽量把字段设置为NOTNULL,避免空间浪费。

6. 数据库的优化,合理设计表结构。比如,有时多些必要得冗余得字段,要好过连表查询。

7. 数据库的优化,合理设计索引,在联表查询或条件筛选中,数据表增加索引后查询的效率会快特别多。

三、代码优化

代码上的优化也是因人而异的,每个人可能编码习惯和风格不同,对于提高代码性能有各自的见解,以下是我的部分看法。

1. foreach合理使用,尽量少在循环中套用循环,在循环次数过多的情况下,非常耗性能。

2. 循环中,尽量避免数据操作,特别是查询操作,在循环次数过多的情况下,多次调用效率很低,可一次获取数据再拼接。

3. 同理,在循环中,避免配置的多次获取,和time()函数方法的调用,这种一次声明就可以重复使用。

4. 在php中,单引号和双引号是有区别的,作为一种习惯字符串我都用单引号,因为它无需编译,对于效率,可能谈不上差异大小,可能就一点点

5. 合理利用在php中的函数,像数组函数就非常丰富,要充分利用,一般不要自己去做他本身就支持的函数方法

6. 可以用上字典的概念,将数组以新索引形式存储起来,我在数据的重组中很常用

7. 根据场景,合理使用缓存可以减少重复的数据查询,提高效率

8. 合理拆分功能,比如一个列表查询,并带有详情查看,可以将此处拆成两个接口实现,在需要时获取数据,减少资源浪费。

四、业务逻辑优化

跟响应无关的程序(如记录日志等)耗时过多,使用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);`
点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
4年前
TARS于“中国PHP大会”首次全面发布PHP版本
2018年5月19日,在上海举行的第六届中国PHP开发者大会(PHPCon)上,TARS开源项目核心开发者梁晨(Ted)对PHP如何通过TARS构建高性能RPC框架做了经验分享,并首次全面发布了TARS的PHP版本。“现有PHP的开发生态,至少要做到功能完善、灵活、轻量和高效。 ”梁晨提道。他在分享中介绍了高性能RPC框架TARS的基本设计思想,
Wesley13 Wesley13
4年前
PHP 开发 APP 接口
APP版本升级以及APP演示①版本升级分析以及数据表设计② 版本升级接口开发以及APP演示!(https://oscimg.oschina.net/oscnet/e2bbac4a62f67997e4684c8ad4485029fd5.png)!(https://oscimg.oschina.net/oscnet/8
Wesley13 Wesley13
4年前
PHP开发APP接口1——APP接口简介
第1章APP接口简介1、APP接口介绍lPHP面向对象中的接口:就是用interface定义的抽象类如:<?php    interface video {        public function getVideos();        publ
Wesley13 Wesley13
4年前
TARS于“中国PHP大会”首次全面发布PHP版本
2018年5月19日,在上海举行的第六届中国PHP开发者大会(PHPCon)上,TARS开源项目核心开发者梁晨(Ted)对PHP如何通过TARS构建高性能RPC框架做了经验分享,并首次全面发布了TARS的PHP版本。“现有PHP的开发生态,至少要做到功能完善、灵活、轻量和高效。 ”梁晨提道。他在分享中介绍了高性能RPC框架TARS的基本设计思想,
Wesley13 Wesley13
4年前
IP地址查询接口及调用方法
设计蜂巢IP地址查询接口:http://www.hujuntao.com/api/ip/ip.php腾讯IP地址查询接口:http://fw.qq.com/ipaddress新浪IP地址查询接口:http://int.dpool.sina.com.cn/iplookup/iplookup.php?formatjs搜狐I
Wesley13 Wesley13
4年前
PHP 开发 APP 接口
1.通信数据的标准格式(JSON),包括:code:状态码(200,400等)message:提示信息(例如:数据返回成功、邮箱格式错误等)data:返回数据!(https://oscimg.oschina.net/oscnet/9949434b70f59290e42777df32afc4c239b.jpg)2.JSON方
Wesley13 Wesley13
4年前
PHP创建多级树型结构
<!lang:php<?php$areaarray(array('id'1,'pid'0,'name''中国'),array('id'5,'pid'0,'name''美国'),array('id'2,'pid'1,'name''吉林'),array('id'4,'pid'2,'n
Wesley13 Wesley13
4年前
PHP的超时实现
我们知道PHP可以设置一个脚本执行的超时时间,也就是脚本的执行时间不能超过设置的超时时间.那么PHP是怎么做到这个功能的呢?  其实PHP的超时功能利用了操作系统的定时信号来实现的,在一个请求开始时(php\_request\_startup),PHP便会利用zend\_set\_timeout()接口来设置一个定时器信号,
Stella981 Stella981
4年前
PHP连接MySQL数据库的三种方式(mysql、mysqli、pdo)
PHP与MySQL的连接有三种API接口,分别是:PHP的MySQL扩展、PHP的mysqli扩展、PHP数据对象(PDO),下面针对以上三种连接方式做下总结,以备在不同场景下选出最优方案。PHP的MySQL扩展是设计开发允许php应用与MySQL数据库交互的早期扩展。MySQL扩展提供了一个面向过程的接口,并且是针对MySQL4.1.3或者更早版
Wesley13 Wesley13
4年前
PHP高性能编程
1.能用PHP数组完成的工作,绝不用文件形式来代替,数组是内存操作,内存操作速度对比文件操作快很多!2.判断一个数值是否在一个数组中,然后决定是否追加数组内容时,不推荐使用in\_array或者array\_key\_exists,因为函数判断都不如isset结构判断来的快!$num0;$resultar
sum墨 sum墨
1年前
《优化接口设计的思路》系列:第九篇—用好缓存,让你的接口速度飞起来
前面的文章都是写接口如何设计、接口怎么验权以及一些接口常用的组件,这篇写点接口性能相关的。接口性能优化有很多途径,比如表建索引、SQL优化、加缓存、重构代码等等,本篇文章主要讲一下我是怎么在项目中使用缓存来提高接口响应速度的。