PHP语言级的性能优化
<h2>PHP性能问题解决方向</h2>
<ul>
<li>PHP语言级的性能优化</li>
<li>PHP周边问题的性能优化</li>
<li>PHP语言自身分析、优化</li>
</ul>
<h2>ab</h2>
<ul>
<li>Apache Benchmark 简称 ab</li>
<li>ab由Apache提供的压力测试软件。安装apache服务器会自带该压测软件</li>
<li>在linux中使用</li>
</ul>
<pre><code class="language-shell">ab -n1000 -c100 http://www.baidu.com
# -n 请求数, -c 并发数</code></pre>
<h2>php语言级性能优化</h2>
<ul>
<li>优化点
<ul>
<li>少写代码,多用php自身能力,多用自身提供的函数</li>
</ul></li>
<li>性能问题
<ul>
<li>自写代码冗余较多,可读性不佳,并且性能低</li>
</ul></li>
<li>为什么性能低
<ul>
<li>php代码需要编译、解析为底层语言,这一过程每次请求都会处理一遍,开销大</li>
</ul></li>
<li>好的方法
<ul>
<li>多使用php内置变量、常量、函数</li>
</ul></li>
</ul>
<h2>php代码运行流程</h2>
<ul>
<li>*.php(php文件)->scanner(扫描)->exprs(表达式)->parser(解析)->opcoder(编码)->exec(执行)->output(输出)</li>
</ul>
<h2>php内置函数的性能优劣</h2>
<ul>
<li>情况描述
<ul>
<li>php内置函数之间依然存在快慢差异</li>
</ul></li>
<li>好的建议
<ul>
<li>多去了解php内置函数的时间复杂度</li>
</ul></li>
</ul>
<h2>尽可能少用魔法函数</h2>
<ul>
<li>情况描述
<ul>
<li>php提供的魔法函数,性能不佳</li>
</ul></li>
<li>为什么性能低
<ul>
<li>为了给php程序员省事,php语言为你做了很多事情</li>
</ul></li>
<li>好的方法
<ul>
<li>尽可能规避使用php魔法函数</li>
</ul></li>
</ul>
<h2>不要使用@</h2>
<ul>
<li>会在代码开始前、结束后,增加opcode,忽略报错</li>
<li>vld
<ul>
<li>查看PHP opcode扩展</li>
</ul></li>
</ul>
<h2>合理使用内存</h2>
<ul>
<li>php有内存回收机制保底,但也请小心使用内存</li>
<li>利用unset()及时释放不使用的内存
<ul>
<li>有时候unset()会出现注销不掉的情况</li>
</ul></li>
</ul>
<h2>尽量少的使用正则表达式</h2>
<ul>
<li>正则表达式的回溯开销较大</li>
<li>利用字符串处理函数,实现相同逻辑</li>
</ul>
<h2>避免在循环内操作</h2>
<ul>
<li>做运算</li>
<li>数据库操作</li>
</ul>
<h2>减少计算密集型业务</h2>
<ul>
<li>php不适合密集型运算的场景,php语言特性决定的。</li>
<li>php适合衔接webserver与后端服务、UI呈现</li>
</ul>