您需要AI互联网
顾问提供专业咨询
AI人工智能 · VR · AR · 智慧博物馆 · 智慧公园 · 景区 · 文创 · 动画 · 游戏 · 年度运营
大模型定制 · WEB3 · 元宇宙 · 高端网站建设 · 小程序 · APP · 微信 · H5 · 电商
对于优化PHP代码的42条小建议
2017.04.13
  PHP代码是企业网站建设、企业软件开发生物网站建设、企业营销型网站建设英文网站建设、众筹网站平台建设等工作中都会使用到的一种程序代码,所以网站建设工程师必须要对该类代码有一个深入的了解。同时还需要在编辑PHP代码时做好优化工作。

  下面分形科技小编就为大家介绍一下分形总结的优化PHP代码的42条小建议,希望可以对大家的网站建设工作有怕帮助。

  1、果一个方法可静态化,就对它做静态声明。速率可提升至 4 倍。

  2、echo 比 print 快。

  3、使用 echo 的多重参数(译注:指用逗号而不是句点)代替字符串连接。

  4、在执行 for 循环之前确定最大循环数,不要每循环一次都计算最大值。

  5、注销那些不用的变量尤其是大数组,以便释放内存。

  6、尽量避免使用__get,__set,__autoload。

  7、require_once() 代价昂贵。

  8、在包含文件时使用完整路径,解析操作系统路径所需的时间会更少。

  9、如果你想知道脚本开始执行(译注:即服务器端收到客户端请求)的时刻,使用$_SERVER[‘REQUEST_TIME’]要好于time()。

  10、函数代替正则表达式完成相同功能。

  11、str_replace 函数比 preg_replace 函数快,但 strtr 函数的效率是 str_replace 函数的四倍。

  12、如果一个字符串替换函数,可接受数组或字符作为参数,并且参数长度不太长,那么可以考虑额外写一段替换代码,使得每次传递参数是一个字符,而不是只写一行代码接受数组作为查询和替换的参数。

  13、使用选择分支语句(译注:即switch case)好于使用多个if,else if语句。

  14、用@屏蔽错误消息的做法非常低效。

  15、打开 apache的 mod_deflate 模块。

  16、数据库连接当使用完毕时应关掉。

  17、$row[‘id’] 的效率是 $row[id] 的7倍。

  18、错误消息代价昂贵。

  19、尽量不要在 for 循环中使用函数,比如 for ($x=0; $x < count($array); $x) 每循环一次都会调用count() 函数。

  20、在方法中递增局部变量,速度是最快的。几乎与在函数中调用局部变量的速度相当。

  21、递增一个全局变量要比递增一个局部变量慢2倍。

  22、递增一个对象属性(如:$this->prop++)要比递增一个局部变量慢 3 倍。

  23、递增一个未预定义的局部变量要比递增一个预定义的局部变量慢 9 至 10 倍。

  24、仅定义一个局部变量而没在函数中调用它,同样会减慢速度(其程度相当于递增一个局部变量)。PHP 大概会检查看是否存在全局变量。

  25、方法调用看来与类中定义的方法的数量无关,因为我(在测试方法之前和之后都)添加了 10 个方法,但性能上没有变化。

  26、派生类中的方法运行起来要快于在基类中定义的同样的方法。

  27、调用带有一个参数的空函数,其花费的时间相当于执行 7 至 8 次的局部变量递增操作。类似的方法调用所花费的时间接近于 15 次的局部变量递增操作。

  28、用单引号代替双引号来包含字符串,这样做会更快一些。因为 PHP 会在双引号包围的字符串中搜寻变量,单引号则不会。当然,只有当你不需要在字符串中包含变量时才可以这么做。

  29、输出多个字符串时,用逗号代替句点来分隔字符串,速度更快。注意:只有 echo 能这么做,它是一种可以把多个字符串当作参数的“函数”(译注:PHP手册中说 echo 是语言结构,不是真正的函数,故把函数加上了双引号)。

  30、Apache 解析一个 PHP 脚本的时间要比解析一个静态 HTML 页面慢 2 至 10 倍。尽量多用静态 HTML 页面,少用脚本。

  31、除非脚本可以缓存,否则每次调用时都会重新编译一次。引入一套PHP缓存机制通常可以提升 25% 至 100% 的性能,以免除编译开销。

  32、尽量做缓存,可使用 memcached。memcached 是一款高性能的内存对象缓存系统,可用来加速动态 Web 应用程序,减轻数据库负载。对运算码 (OP code) 的缓存很有用,使得脚本不必为每个请求做重新编译。

  33、当操作字符串并需要检验其长度是否满足某种要求时,你想当然地会使用 strlen()函数。此函数执行起来相当快,因为它不做任何计算,只返回在zval结构(C的内置数据结构,用于存储PHP变量)中存储的已知字符串长度。

  但是,由于 strlen() 是函数,多多少少会有些慢,因为函数调用会经过诸多步骤,如字母小写化(译注:指函数名小写化,PHP 不区分函数名大小写)、哈希查找,会跟随被调用的函数一起执行。在某些情况下,你可以使用 isset() 技巧加速执行你的代码。

  34、当执行变量$i的递增或递减时,$i++会比++$i慢一些。这种差异是PHP特有的,并不适用于其他语言,所以请不要修改你的C或Java代码并指望它们能立即变快,没用的。++$i更快是因为它只需要3条指令(opcodes),$i++则需要4条指令。

  后置递增实际上会产生一个临时变量,这个临时变量随后被递增。而前置递增直接在原值上递增。这是最优化处理的一种,正如Zend的PHP优化器所作的那样。注意,不是所有的指令优化器都会做同样的优化处理,并且存在大量没有装配指令优化器的互联网服务提 供商(ISPs)和服务器。

  35、并不是事必面向对象 (OOP),面向对象往往开销很大,每个方法和对象调用都会消耗很多内存。

  36、并非要用类实现所有的数据结构,数组也很有用。

  37、不要把方法细分得过多,仔细想想你真正打算重用的是哪些代码?

  38、当你需要时,你总能把代码分解成方法。

  39、尽量采用大量的 PHP 内置函数。

  40、如果在代码中存在大量耗时的函数,你可以考虑用 C 扩展的方式实现它们。

  41、评估检验 (profile) 你的代码。检验器会告诉你,代码的哪些部分消耗了多少时间。Xdebug 调试器包含了检验程序,评估检验总体上可以显示出代码的瓶颈。

  42、mod_zip 可作为 Apache 模块,用来即时压缩你的数据,并可让数据传输量降低 80%。  
400-6446-365 / 010-64928252 我想要个更针对我需求的方案
让决策变的简单
好的开始是成功的一半
请输入关键字