您的位置:首页 > 编程语言 > PHP开发

提升运行效率 php不得不知道的优化建议

2014-05-05 13:23 330 查看
PHP是流行的脚本开发语言,相对于Java、C等编译语言,一次编译,到处运行,效率上是比脚本类语言要快的;而PHP是通过Zend语言引擎进行解析的,可以将其作为Web服务器的内嵌模块或者通过Socket与服务器进行通讯,提升PHP的执行效率,掌握一些优化技巧和建议总是有好处的。1、用单引号替代双引号引用字符串。2、将类的方法定义成static。3、$row['id']代替$row[id]。4、echo代替print进行输出。5、运用foreach代替while和for循环,或者在for循环前计算循环最大值。6、注销那些不用的变量尤其是大数组,以便释放内存。7、尽量避免使用__get,__set,__autoload这些魔法常量。8、require_once()比require代价昂贵。9、include文件时尽量使用绝对路径,少用iniset()来设置include_path。10、使用$_SERVER['REQUEST_TIME']要好于time(),对于计算脚本运行时间。11、函数代替正则表达式完成相同功能。12、str_replace函数比preg_replace函数快,但strtr函数的效率比str_replace函数效率快。13、字符串替换函数的形参尽量简单。14、使用选择分支语句switch case优于使用多个if,else if语句。15、尽量避免使用@屏蔽错误消息。16、打开apache的mod_deflate模块,可以提高网页的浏览速度。17、数据库连接当使用完毕时应关掉,不要用长连接。18、错误消息代价昂贵。19、在方法中递增局部变量,速度是最快的。几乎与在函数中调用局部变量的速度相当。20、递增一个全局变量要比递增一个局部变量慢近2倍。21、递增一个对象属性(如:$this->prop++)要比递增一个局部变量慢3倍。22、递增一个未预定义的局部变量要比递增一个预定义的局部变量慢约9至10倍。23、仅定义一个局部变量而没在函数中调用它,同样会减慢速度。24、方法调用看来与类中定义的方法的数量无关。25、派生类中的方法运行起来要快于在基类中定义的同样的方法。26、调用带有一个参数的空函数,其花费的时间相当于执行7至8次的局部变量递增操作。类似的方法调用所花费的时间接近于15次的局部变量递增操作。27、Apache解析PHP脚本的时间要比解析静态HTML页面慢很多,尽量多用静态HTML页面,少用脚本。28、除非脚本可以缓存,否则每次调用时都会重新编译一次,引入一套PHP缓存机制,以免除编译开销。29、应用层必要时作缓存,可使用memcache或者redis等nosql,nosql是高性能的内存对象缓存系统,可用来加速动态Web应用程序,减轻数据库负载。30、当操作字符串并需要检验其长度是否满足某种要求时,可以使用strlen()函数。在某些情况下,也可以使用isset() 技巧加速执行你的代码,如strlen($foo) 的速度比!isset($foo{5})慢。31、当执行变量$i的递增或递减时,$i++会比++$i慢一些。这种差异是PHP特有的。32、面向对象往往开销很大,每个方法和对象调用都会消耗很多内存。33、并非要用类实现所有的数据结构,数组、哈希等有时也很有用。34、不要把方法细分得过多,调用函数越多,开销越大。35、代码分解成方法时,方法嵌套不宜过深,否则大大影响PHP的运行效率。36、尽量使用PHP的内置函数。37、如果在代码中存在大量耗时的函数,可以考虑用C扩展的方式实现。38、测试检验(profile)代码,Xdebug调试器包含了检验程序,总体上可以显示出代码的瓶颈。39、mod_zip可作为Apache模块,用来即时压缩数据,并可让数据传输量大概降低80%。40、尽量使用file_get_contents和file_put_contents替代file、fopen、feof、fgets等系列方法的情况下,尽量用file_get_contents。41、尽量的少进行文件操作。42、优化Select SQL语句,在可能的情况下尽量少的进行Insert、Update操作。43、尽可能的使用PHP内部函数。44、循环内部尽量不要声明变量,尤其是大变量、对象,每次分配都会有开销。45、多维数组尽量不要循环嵌套赋值。46、用i+=1代替i=i+1,符合c/c++的习惯,效率还高。47、对global变量,应该用完就unset()掉。48、数据量大时,尽量采用分页来取。【原文地址
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  服务器 Socket 表达式