博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
引用 PHP速率优化技巧1
阅读量:6377 次
发布时间:2019-06-23

本文共 2054 字,大约阅读时间需要 6 分钟。

hot3.png

1.在可以用file_get_contents替代file、fopen、feof、fgets等系列方法的情况下,尽量用 file_get_contents,因为他的效率高得多!但是要注意file_get_contents在打开一个URL文件时候的PHP版本问题;

2.尽量的少进行文件操作,虽然PHP的文件操作效率也不低的;

3.优化SELECT SQL语句,在可能的情况下尽量少的进行INSERT、UPDATE操作(在UPDATE上,我被恶批过);

4.尽可能的使用PHP内部函数(但是我却为了找个PHP里面不存在的函数,浪费了本可以写出一个自定义函数的时间,经验问题啊!);

5.循环内部不要声明变量,尤其是大变量:对象(这好像不只是PHP里面要注意的问题吧?);

6.多维数组尽量不要循环嵌套赋值;

7.在可以用PHP内部字符串操作函数的情况下,不要用正则表达式;

8.foreach效率更高,尽量用foreach代替while和for循环;

9.用单引号替代双引号引用字符串;

10.用i+=1代替i=i+1。符合c/c++的习惯,效率还高;

11.对global变量,应该用完就unset()掉;

静态调用的成员一定要定义成static (PHP5 ONLY)

Tips: PHP5引入了静态成员的概念,作用和PHP4的函数内部静态变量一致,但前者是作为类的成员来使用。静态变量和Ruby的类变量(class variable)差不多,所有类的实例共享同一个静态变量。静态地调用非static 成员,效率会比静态地调用 static 成员慢 50-60%。主要是因为前者会产生 E_STRICT 警告,内部也需要做转换。

<?php

class foo {
function bar() {
echo'foobar';
}
}
$foo=new foo;
// instance way
$foo->bar();
// static way
foo::bar();
?>

使用类常量(PHP5 ONLY)

Tips: PHP5新功能,类似于C++的const。

使用类常量的好处是:

- 编译时解析,没有额外开销

- 杂凑表更小,所以内部查找更快

- 类常量仅存在于特定「命名空间」,所以杂凑名更短

- 代码更干净,使除错更方便

(暂时)不要使用 require/include_once

require/include_once 每次被调用的时候都会打开目标文件!

- 如果用绝对路径的话,PHP 5.2/6.0 不存在这个问题

- 新版的 APC 缓存系统已经解决这个问题

文件 I/O 增加 => 效率降低

如果需要,可以自行检查文件是否已被 require/include。

不要调用毫无意义的函数

有对应的常量的时候,不要使用函数。

<?php

php_uname('s') ==PHP_OS;
php_version() ==PHP_VERSION;
php_sapi_name() == PHP_SAPI;
?>

虽然使用不多,但是效率提升大概在3500% 左右。

注意空字符串('')和NULL的区别

  PHP中空字符串和NULL都是以值为0存储的,但是他们的类型并不一样,前者是string,而后者是NULL,可见字符串('')、NULL值相等但类型不等。

  分清==(等于)和===(全等于)的区别

  两者都属于比较运算符,==(等于)只比较值是否相等,而===(全等于)则不但比较值是否相等,还会比较类型是否相等,它更为严格。

  分清include与require的区别

  include()与require()的功能也基本相同,但在用法上也有一些不同,include()是有条件包含,而require()则是无条件包含函数。例如在下面代码中,如果变量$a为真,则将包含文件a.:if($a) {include("a.php");}而require()则和include()不同,不管$a取何值,下面的代码都会把文件a.php包 含:if($a){require("a.php");}在错误处理方面,使用include语句,如果发生包含错误,程序将跳过include语句,虽 然会显示错误信息但是程序还是会继续执行。但是,requre语句会提示一个致命错误。

  注意isset和empty的区别

  empty是判断一个变量是否为“空”,而isset则是判断一个变量是否已经被设置。

  分清self::和this-->的区别

  在访问PHP类中的成员变量或方法时,如果被引用的变量或者方法被声明成const(常量)或者static(静态属性),那么就必须使用域操作符::,而如果被引用的变量或者方法没有被声明成const或者static,那么就使用指向操作符->。

转载于:https://my.oschina.net/u/267858/blog/356695

你可能感兴趣的文章
小李飞刀:leetcode我又来啦~
查看>>
30个值得关注的Vue开源项目
查看>>
Ajax请求服务端时可以新建cookie吗
查看>>
一个有趣的问题: 如何用HashSet来存储重复的字符串?
查看>>
聊聊flink的TableFactory
查看>>
Spring MVC常用客户端参数接收方式
查看>>
js封装toast组件——常用工具函数
查看>>
输出 JSON 数据时的 Content-Type
查看>>
SpaceVim 1.1.0 发布,模块化 Vim IDE
查看>>
CKFinder 3.5 发布,即将支持 Java
查看>>
MyBatis Generator 用法详解
查看>>
ThinkCMF 5.1.1 正式发布,优化 swoole 下性能
查看>>
vn.py 2.0 正式版发布,全功能交易程序开发框架
查看>>
Elasticsearch Scroll分页检索案例分享
查看>>
ROM包制作
查看>>
在SAP UI中使用纯JavaScript显示产品主数据的3D模型视图
查看>>
React中的模式对话框
查看>>
机器学习 vs. 深度学习
查看>>
[Git]Git指南一 查看创建删除标签
查看>>
使用Maven运行Java main的方法(转)
查看>>