什么是更快:include()或file_get_contents()?

时间:2012-05-02 19:14:49

标签: php include file-get-contents

我正在为我的项目开发SEO系统,并且正在使用单个页面优化所有链接。

摘自.htaccess档案:

RewriteRule ^(.+)$ seo.php [L,QSA]

此SEO文件(seo.php)将获取请求的路径并将其解析为我的脚本中的有效URL。

我在include('cat.php?catid=1')末尾使用seo.php,一切正常,但我想知道哪个更快:include()file_get_contents()

当我使用file_get_content('cat.php?catid=1')时,它会显示PHP文件的来源,但是当我使用file_get_content('http://localhost/cat.php?catid=1')时,它会显示正常页面。

那么,哪个更快:file_get_content()include()

4 个答案:

答案 0 :(得分:12)

他们当然是不同的

  • Include将解析其中的PHP代码
  • file_get_contents将仅返回内容

因此,如果你只想要检索页面的html内容,请使用file_get_contents否则如果需要解析PHP代码,请使用include();

注意:如果您想要检索网站上托管的网页内容,则应使用本地路径而不是资源的网络路径,即:

  • 执行:file_get_contents('/home/user/site/file.html');
  • 不要:file_get_contents('http://example.com/file.html');

答案 1 :(得分:2)

如果您要将自己的本地文件作为模板的一部分加载,请使用requireinclude。当然,您可以使用require_onceinclude_once,但不要将file_get_contents用于本地文件。

这与表现没有任何关系,而是与目的有关。在模板依赖项中动态加载不存在file_get_contents。除非你需要在展示之前解析他们的内容,或者他们在其他领域,这是非常不可能的。

答案 2 :(得分:0)

  1. 这是一个毫无意义的问题。两者都足够快。无需担心自己的问题。
  2. 包括('?cat.php CATID = 1&#39);将永远不会工作
  3. 通过HTTP请求调用您自己的代码是错误的。
  4. 所以,代码应该是

    include('cat.php');
    

答案 3 :(得分:-5)

更正:您无法使用file_get_contents的本地路径:

file_get_contents('/home/user/site/file.html');  <-- will never work.

file_get_contents('http://site.com/file.html');  <-- this should work.