Heim >php教程 >php手册 >PHP面试题之优化,php面试题

PHP面试题之优化,php面试题

WBOY
WBOYOriginal
2016-06-13 08:53:051352Durchsuche

PHP面试题之优化,php面试题

<span> * 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 </span><span>http://www.baidu.com</span><span>
 * 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)</span><span><br /></span>

 

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn