教程集 www.jiaochengji.com
教程集 >  脚本编程  >  php  >  正文 php高性能接口怎么设计

php高性能接口怎么设计

发布时间:2020-05-30   编辑:jiaochengji.com
教程集为您提供php高性能接口怎么设计等资源,欢迎您收藏本站,我们将为您提供最新的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);

更多PHP相关知识,请访问教程集!

以上就是php高性能接口怎么设计的详细内容,更多请关注教程集其它相关文章!

  • 本文原创发布教程集,转载请注明出处,感谢您的尊重!
  • 您可能感兴趣的文章:
    接口隔离原则是什么?
    php高性能接口怎么设计
    联想笔记本USB接口不能用怎么办?USB接口使用不了
    jQuery文件下载插件 jDownload
    PHP设计模式概述
    django框架怎么实现高并发
    mysql性能优化之索引优化
    django怎么并发
    php怎么连接mysql5.0?
    django怎么处理高并发

    [关闭]
    ~ ~