php项目 如何进行 性能优化 一 ( php使用上的性能优化)

在开发的过程中,我们经常会遇到php项目如何进行优化的问题,由简单到容易我们往往可以从一下三个方向来考虑
  1. php 语言 使用上的性能优化
  2. php 周边问题的性能优化
  3. php 语言本身的性能优化

  • php语言使用上的性能优化
    大家都知道代码质量是有高低之分的,怎么能提高我们的代码质量呢,其实很简单

    • 少些代码,多尝试使用php本身的功能,例如内置函数,常量
      这里写图片描述

    上图是php代码被执行的过程

    • Scanning(Lexing) ,将PHP代码转换为语言片段(Tokens)
    • Parsing, 将Tokens转换成简单而有意义的表达式
    • Compilation, 将表达式编译成Opocdes
    • Execution, 顺次执行Opcodes,每次一条,从而实现PHP脚本的功能

    php的内置函数在php语言开发时就被进行了优化,我们直接使用内置函数可以节省系统ScanningParsing的时间,从而提高我的的性能


  • 内置函数的效率也是有高低的, 要选择效率高的内置函数

  • 尽量避免使用php的魔术方法
    魔术方法虽然用起来方便的效率却很低,因为魔术方法虽然为我们省了事,但php内部却为我们做了很多

  • 不要使用错误抑制符@
    @虽然方便,但原理确实在程序运行开始和结束时增加opcodes ,让系统忽略报错,浪费系统性能

  • 合理使用内存
    php虽然有内存回收机制,但是还是要注意使用unset()释放未使用的内存

  • 尽量少使用正则表达式
    正则表达式效率很低,开销很大,建议使用字符串处理函数代替正则表达式

  • 避免在循环中进行计算,因为这样每次循环都会计算一次
test.php


<?php
$arr=range(1000,100000);
//$length=count($arr);
$sum=0;
for($i=0;$i<count($arr);$i++)
{
   $sum=$sum+$arr[$i];
}

echo $sum;
test1.php


<?php
$arr=range(1000,100000);
$length=count($arr);
$sum=0;
for($i=0;$i<$length;$i++)
{
   $sum=$sum+$arr[$i];
}

echo $sum;
[root@izuf66bc6zb0cuc0f7x9krz php]# time php test.php 
4999550500
real    0m0.033s
user    0m0.023s
sys 0m0.009s
[root@izuf66bc6zb0cuc0f7x9krz php]# time php test1.php 
4999550500
real    0m0.028s
user    0m0.021s
sys 0m0.007s
[root@izuf66bc6zb0cuc0f7x9krz php]# 

由上面的例子就可以看出 test1.php 比 test.php 效率高


  • 不要使用php进行密集型的运算
    php的语言特性决定了php不适合做密集型运算,不过等到php7 推出 jit 可能会有改观

  • 请务必使用带引号的字符串做键值

    因为php会将木有引号的键值当成常量,会产生查找常量的开销

<?php

$arr = ["one" => 1, "two" => 2, "three" => 3, 123 => 4];

echo $arr[one];

输出 1  但会有一个notice 显示找不到常量 one
<?php

define('one', 123);

$arr = ["one" => 1, "two" => 2, "three" => 3, 123 => 4];

echo $arr[one];

输出 4 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值