手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表Tag:open_basedir

open_basedir 严重影响PHP I/O性能

这是昨天看到的一篇文章,看完后,我针对服务器等做了一下测试,确实有影响。毕竟open_basedir在每一次require,include以及判断文件等的时候,都要先判断是否在可执行目录内。所以。。。性能就会下降(如果是用框架的,可能性能会更差一点),如果是自己的机器,一般也可以通过设定文件目录权限,来防止这种情况发生【linux可以指定用户、用户组。windows可以设定目录的所有者(当时在win下我就最烦这个,因为需要为每个虚拟主机添加一个用户,再指定权限,然后再到目录上设定用户)】

下面就是我看到的文章的内容:

今天在做项目的时候发现 没几行语句 竟然耗费了0.04秒

十分让我吃惊.随后进行跟踪 得知就在I/O读写的时候最费时间 一个is_file竟然费了0.003秒

后来让我百思不得其解 Google也没有任何答案.

然后我又把项目放到另外一个电脑上 发现速度直线上升 从以前的0.04秒变成了0.007秒左右.

我很纳闷 难道我的本本就这么差劲不应该啊

经过我的比较 我发现了 在我机器上的这个项目的虚拟主机中 设置了open_basedir.

大家都知道 这个对于虚拟主机来说是必不可少的..

但是后来我又进行测试一遍 难道真的是这样吗

我的测试代码非常简单:

PHP代码
  1. $time = microtime(true);    
  2. is_file('1.html');    
  3. echo microtime(true) - $time;    

我的弄了一个空的1.html文件 这个文件是在当前目录绝对存在的.

我新建了一个虚拟主机 然后设置了一下open_basedir.

得到的结果是0.0018570423126221左右

然后我进apache的配置文件 把open_basedir删除以后

得到的结果是5.0067901611328E-5 这个结果小到PHP中的小数点都不能表示了

(注:以上结果都是多次运行缓存后的结果 因为is_file的结果会被缓存的)

现在我终于明白了 为啥虚拟主机那些探针中 I/O的性能都那么小的原因了..

杯具啊..

 

--EOF--

原文来自http://www.skiyo.cn/article/Skiyo-243-1263890301.html,各位也可以测试一下。。

Tags: open_basedir