PHP面试题之优化

 * PHP性能问题
 * 1.PHP语法使用的不恰当
 * 2.使用PHP语言做了它不擅长的事
 * 3.使用PHP语言链接的服务不给力
 * 4.PHP自身做不了的事情
 *
 * PHP的性能问题的解决方向
 * 1.PHP语言级的性能优化(代码优化)
 * 2.PHP周边问题的性能优化(linux,mysql,磁盘等)
 * 3.PHP语言性能的优化(c层)
 *
 * 使用ab压力测试(-n请求数  -c并发数 url目标压测地址)
 * ./ab -n1000 -c100 http://www.baidu.com
 * Request per second每秒接受的请求数(越大越好)
 * Time per request一个请求需要的时间(越小越好)
 *
 * time php test.php 测试代码执行时间
 *
 * vld- PHP Opcode查看扩展
 * php -dvld.active=1 -dvld.execute=0  test.php
 *
 * PHP代码运行流程
 * *.php(PHP文件)->Scanner(扫描代码,分析)->Exprs(保存成zend引擎可以识别的文件)->Parser(解析)->Opcodes(能被执行的文件)->Exec(执行)->Output(输出结果)
 * 多使用PHP内置变量,常量,函数
 * php内置函数也存在差异,多使用时间复杂度低的.例isset()和array_key_exists()存在差异
 * 尽可能规避使用PHP魔法函数
 * 禁用@错误抑制符,会产生额外的开销
 * 合理使用内存,利用unset()及时释放不使用的内存
 * 尽量少使用正则表达式
 * 避免在循环内做运算for($i=0;strlen($str);$i++){}
 * 减少计算密集型业务(php语言特性决定了PHP不适合做大数据量运算)
 * 务必使用带引号字符串做键值(key)
 * 减少文件类操作 内存<<数据库<磁盘<读写网络数据
 * 优化网络:1.设置超时时间 连接超时200ms  读超时800ms 写超时500  2.将串行请求并行化:使用curl_multi_*() ,使用swoole扩展
 * 压缩PHP接口输出:Gzip  好处:client更快获取数据 坏处:额外的cpu开销
 * PHP缓存复用
 * 时间窗口重叠方法
 * PHP旁路方案
 * xhprof (php -ri xhprof)
时间: 2024-11-17 14:53:37

PHP面试题之优化的相关文章

百度面试题(总结+更新)

关于百度面试题我现在的感觉是用不上很深的算法,但是思路很灵活,前边已经我已经贴出了5种解法的源代码,本来以为可以到此收尾,今天又有一位同学说了一种思路比较奇怪但是符合题意的方法..请看关于淘汰85%面试者的百度开发者面试题的看法的评论,@apollokk . 后边我也说过几种优化后的方法,如果你还没有看可以看一下百度开发者面试题(优化)这篇文章,关于它的总结你可以参看:百度开发者面试题(总结),当然本问还是要把apollokk的方法的完整代码贴出了,由于思路不难,我就不多说废话了(顺便说一下,输

openwrt定制管理

关于百度面试题我现在的感觉是用不上很深的算法,但是思路很灵活,前边已经我已经贴出了5种解法的源代码,本来以为可以到此收尾,今天又有一位同学说了一种思路比较奇怪但是符合题意的方法..请看关于淘汰85%面试者的百度开发者面试题的看法的评论,@apollokk . 后边我也说过几种优化后的方法,如果你还没有看可以看一下百度开发者面试题(优化)这篇文章,关于它的总结你可以参看:百度开发者面试题(总结),当然本问还是要把apollokk的方法的完整代码贴出了,由于思路不难,我就不多说废话了(顺便说一下,输

java中运算符详解

前言 运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算.JAVA中常见的运算符有很多种,大致分为以下几种,常见的几种运算符如下图: 算术运算符 加.减.乘.除.求余.例++.--.%./.  赋值运算符 为变量或常量起到赋值作用的.例如=.+=.*= 关系运算符 判断数据大小的,结果为一个布尔值.例如>.>=.!=.== 逻辑运算符 进行逻辑运算,运算的成员为布尔值,结果也为布尔值.例如&&.||.!. 条件运算符 也称三目运算符,表达式为(a<b)?a:b

SSM开发在线考试系统-完整版+视频教程

SSM框架在线考试系统实战开发教程 开发软件: MyEclipse.Eclipse.Idea + JDK8.0以上 + Tomcat8.0 + MySQL5.7以上 [Java开发环境&工具]链接: https://pan.baidu.com/s/1RPQV0RMwd6TUmlzDIghNag 提取码: 9qrv 环境搭建教程: 项目后台管理功能介绍(整理需求): 专业学科管理(专业名称.备注). 考生管理(用户名.密码.所属专业.姓名.联系方式.注册时间). 试题管理(试题类型管理(单选.多选

面试题--优化Hibernate所鼓励方法

下面哪一项不属于优化Hibernate所鼓励的? A:使用单向一对多关联,不使用双向一对多 B:不用一对一,用多对一取代 C:配置对象缓存,不使用集合缓存 D:继承类使用显式多态 答案:(A) 关于试题相关总结: 优化Hibernate所鼓励的7大措施: 1.尽量使用many-to-one,避免使用单项one-to-many 2.灵活使用单向one-to-many 3.不用一对一,使用多对一代替一对一 4.配置对象缓存,不使用集合缓存 5.一对多使用Bag 多对一使用Set 6.继承使用显示多态

Bzoj2034 2009国家集训队试题 最大收益 贪心+各种优化+二分图

这个题真的是太神了... 从一開始枚举到最后n方的转化,各种优化基本都用到了极致.... FQW的题解写了好多,个人感觉我全然没有在这里废话的必要了 直接看这里 各种方法真的是应有尽有 大概说下 首先能够想到一个KM算法求二分图最大代权匹配的问题对吧 左边是任务右边是时间 可是这个是三次方啊 那我们就按价值排序,这样就不用代权匹配了可是还是三方 可是左边在右边的连线是单调的... 所以就能够贪心推断了... #include<iostream> #include<cstring>

面试被问MySQL总回答不好:总结100道MySQL面试题和21题MySQL性能优化

前一阵系统的学习了一下MySQL,也有一些实际操作经验,偶然看到一篇和MySQL相关的面试文章,发现其中的一些问题自己也回答不好,虽然知识点大部分都知道,但是无法将知识串联起来 因此决定搞一个MySQL灵魂100问,试着用回答问题的方式,让自己对知识点的理解更加深入一点 主要针对的是开发人员需要知道的一些MySQL的知识点,主要包括索引,事务,优化等方面,以在面试中高频的问句形式给出答案 索引相关 什么是索引? 索引是个什么样的数据结构呢? Hash索引和B+树所有有什么区别或者说优劣呢? 上面

面试之路(5)-阿里面试题android网络图片加载优化

题目: 遇到网络不好,卡顿的时候如何对网络的加载图片进行优化? 思路: 从加载的图片的本身和手机的存储两方面考虑 解决办法: 1.找现有图片格式的替换者 在众多的图片格式中,选择了Google的WebP.原因很简单:压缩效率高,而且对Android的支持好(毕竟就是Google提出来的).使用 WebP 之后,相对于JPG格式的图片,流量省了将近 25% 到 35 %:相对于 PNG 格式的图片,流量省了将近80%.最重要的是使用WebP之后图片质量还没改变. 2.按照设备处理图片的能力来加载图

mysql索引优化面试题

曾经偷偷的面试了两个单位,都提到了Mysql的优化问题,所以以后要多多学习数据库的优化知识了.建设数据库的优化大概主要就是索引的优化了吧,因为我们不可能修改数据结构的情况下,提高数据库的查询效率似乎也只能用索引了.当然这也是建立在你sql语句写的比较科学的情况下,如果你的sql语句本身就写的比较垃圾,神仙也救不了你!下边是在网上找到的一些资料,保留下来备用吧1,创建索引对于查询占主要的应用来说,索引显得尤为重要.很多时候性能问题很简单的就是因为我们忘了添加索引而造成的,或者说没有添加更为有效的索