PHP中require() 與 require_once() 的效率比較

轉載於: [url]http://blog.csdn.net/mayongzhan/archive/2008/03/06/2154827.aspx[/url]


require() VS require_once()

刚发现require_once()比require()慢,以前我的项目全是使用的require_once(),郁闷...
> 最好直接使用include或者require,
> 因为*_once()在一个opcode缓存下的调用非常慢.
> #_once()需要额外的去查看系统是否已经调用过这个文件.

译者注:
5.2.X对require_once()和include_once()进行了优化,所以不用担心这个问题了.

摘一段文章如下:
PHP 5.2 以前 require_once() 和 include_once() 的做法是无论某个文件是否已经被缓存或编译过,统统是先 fopen() 再说,打开成功后在查询一下是否已经缓存过。这么处理的原因就是 在 PHP 5.1 以前没有很完美的解决 realpath() 相对路径和符号连接方面的问题。因为若不能唯一地正确地确定某个路径的真实路径表示那么你就无法利用这个路径的唯一性去解决某个问题。而 fopen 则没有这个顾虑。realpath() 的这个问题在 PHP 5.1 中被彻底搞定了,但还没来得及应用到 require_once() 和 include_once() ,结果就拖迟到现在。解决这个问题的好处是在于避免了 fopen 这个 I/O 操作,在很多高负载情形中,通常都是 数据库、网络或者磁盘 I/O 而不是 CPU 成为瓶颈。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值