【问题标题】:What is faster: include() or file_get_contents()?哪个更快:include() 或 file_get_contents()?
【发布时间】:2015-01-30 19:50:57
【问题描述】:

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

摘自.htaccess文件:

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

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

我在seo.php 末尾使用include('cat.php?catid=1'),一切正常,但我想知道哪个更快: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()

【问题讨论】:

  • include('cat.php?catid=1') 根本不应该工作,因为 PHP 会将其视为本地文件系统操作,而不是使用 http 请求。你真的有一个本地文件名cat.php?catid=1吗?本地文件系统选项不使用查询字符串。
  • 似乎 include 工作速度快了大约 8 毫秒。但是我只测试了3次(打开的页面)

标签: php include file-get-contents


【解决方案1】:

它们当然是不同的

  • 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');

【讨论】:

  • 你也可以include()一个HTML模板来代替file_get_contents()
  • 谢谢你的建议 :) 它帮助了我,但你说包括很好地解析其中的 php 代码你的意思是它很好地解析了 cat.php 中的 php 代码两次?如果我使用 file_get_content('localhost/cat.php?catid=1')
【解决方案2】:

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

这与性能无关,它与目的有关。 file_get_contents 不存在用于动态加载模板依赖项。除非您需要在显示之前解析它们的内容,或者它们位于其他域中,否则这不太可能。

【讨论】:

【解决方案3】:
  1. 这是一个毫无意义的问题。两个都够快。没有必要用不知从何而来的问题来困扰自己。
  2. 包括('cat.php?catid=1');永远不会工作
  3. 通过 HTTP 请求调用您自己的代码是错误的。

所以,代码应该是

include('cat.php');

【讨论】:

  • 是的,这就是我所做的,很抱歉我在调用 cat.php 之前设置了 $_GET 方法
  • 所以,保留它。为什么要问一个问题?
  • 求知我的朋友 :) 我没有像你这样的高经验,我害怕错过一些东西,所以非常感谢你让我现在放松,因为我的工作很好
  • 对于知识,必须询问这两者之间的本质区别是什么......并最终关注手册。虽然问哪个更快没有意义,也没有知识。
【解决方案4】:

更正: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.

【讨论】:

  • 哈哈,我无法控制:)
猜你喜欢
  • 2013-11-28
  • 2010-11-10
  • 2012-10-03
  • 2011-02-15
  • 2012-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多