首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >file_get_contents比include慢吗?

file_get_contents比include慢吗?
EN

Stack Overflow用户
提问于 2010-02-25 02:04:34
回答 3查看 13.5K关注 0票数 17

我有一个我经常使用的php5库的文件缓存系统。当请求发出时,我检查是否有缓存的文件,如果有,我会呈现它并退出。

代码语言:javascript
复制
$contents = file_get_contents( self::_cacheFile() );
echo $contents;
exit();     

我必须使用file_get_contents而不是只包含,因为缓存的xml文件太麻烦了。

代码语言:javascript
复制
`<?xml version="1.0"?>` 

有没有更好的方法来拉入我的缓存文件而不触发快捷键?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-02-25 02:16:04

如果您只想输出文件内容,则应该使用readfile()。这比file_get_contents()更快,占用的内存也更少

票数 12
EN

Stack Overflow用户

发布于 2010-02-25 02:08:29

没有什么比(做得好的)基准测试更好的了(它比看起来更难,我可能忽略了一些东西)。尽管如此,因为两者都是在相同的条件下制造的,所以它们应该作为一把尺子。

test.txt是一个12kB、876行的文本文件:

代码语言:javascript
复制
vinko@parrot:~$ ls -la test.txt ; wc -l test.txt
-rw-r--r-- 1 vinko vinko 12264 2010-02-24 19:08 test.txt
876 test.txt

file_get_contents.php:

代码语言:javascript
复制
vinko@parrot:~$ more file_get_contents.php
<?php
echo file_get_contents("test.txt");
?>

include.php

代码语言:javascript
复制
vinko@parrot:~$ more include.php
<?php
include("test.txt");
?>

readfile.php

代码语言:javascript
复制
vinko@parrot:~$ more readfile.php
<?php
readfile("test.txt");
?>

因此,我们对每个的10000次迭代的执行进行计时:

代码语言:javascript
复制
vinko@parrot:~$ time for i in `seq 10000`; do php file_get_contents.php >/dev/null; done

real    3m57.895s
user    2m35.380s
sys     1m15.080s

vinko@parrot:~$ time for i in `seq 10000`; do php include.php >/dev/null; done

real    3m57.919s
user    2m37.040s
sys     1m16.780s

vinko@parrot:~$ time for i in `seq 10000`; do php readfile.php >/dev/null; done 
real    3m57.620s
user    2m38.400s
sys     1m14.100s

结论:对于安装了Suhosin Patch的PHP5.2.4上的12个kB文本文件,这三种方法实际上都是等效的。

票数 12
EN

Stack Overflow用户

发布于 2010-02-25 02:24:11

感谢你的建议,对于那些好奇的人

代码语言:javascript
复制
readfile();
<!-- dynamic page rendered in 0.133193016052 seconds.-->
<!-- static page rendered in 0.00292587280273 seconds.-->

代码语言:javascript
复制
file_get_contents();
<!-- dynamic page rendered in 0.133193016052 seconds.-->
<!-- static page rendered in 0.00303602218628 seconds.-->

代码语言:javascript
复制
include();
<!-- dynamic page rendered in 0.133193016052 seconds.-->
<!-- static page rendered in 0.00348496437073 seconds.-->
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2328301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档