PHP - 调用或者读取文件的方法
我们写程序时常常要调用已有的代码或者读取已经存在的文件,这样一来简化代码,二来挺高代码的复用率。在PHP中我们用 include 或者require来调用现有的代码。include和require功能非常相似。唯一的区别是它们对运行错误的处理方式不同。两者都提供警告(warning),但是当出现错误时,比如说所需文件的路径不对,require将终止程序,这是PHP对致命错误(fetal error)的处理方法, 相比之下,include就宽容的多,它会跳过这个错误,让程序继续执行。另外我们还常常用到,include_once和require_once, once这里代表只调用一次的意思。因为如果一个文件(代码)在程序的同一个运行周期里被多次调用,有可能会造成变量重复分配,函数重复定义等问题,所以当程序由很多部分组成,我们在调用代码时采用include_once 和require_once,这样即使同样的代码被调用了两次,在整个程序的实际运行中将只被调用一次。
include 和require 是PHP里的控制结构(Control Structures), 因此严格的讲它们不算是PHP的方法(function), 但是我们也可以用它们来读取文件,这就类似于使用PHP里其他一些方法(function), 比如file_get_contents, fpassthru, 等等。使用include、require 和其它读取文件的方法有什么不同呢?这主要表现在执行速度和内存使用上。下面是引自 SITE WITH THE LAMP 的几种方法对1M文件读取的对比表,可以看出fpassthru执行速度最快、readfile占用内存最小。相比之下,include, require 就的效率就很低。所以当我们只是对静态文件进行读取的时候,尽量不要用include和require 。
| Function | Sample Usage | Time (s) | Memory (b) |
|---|---|---|---|
| file_get_contents | echo file_get_contents($filename); | 0.00564 | 1067856 |
| fpassthru | fpassthru($fp); | 0.00184 | 20032 |
| fgets | $fp = fopen($filename,"rb");
while(!feof($fp))
{
echo fgets($fp);
} |
0.07190 | 30768 |
| file | echo join("",file($filename)); | 0.06464 | 2185624 |
| require_once | require_once($filename); | 0.08065 | 2067696 |
| include | include($filename); | 0.08202 | 2067696 |
| readfile | readfile($filename); | 0.00191 | 19208 |
标签: PHP



0 条评论:
发表评论
指向此帖子的链接: