【问题标题】:PHP include slow takes 2.5 sec [closed]PHP包括慢需要2.5秒[关闭]
【发布时间】:2013-03-27 22:42:28
【问题描述】:

我正在使用 jQuery ajax 显示数据表。我包含一个文件,第一次需要 2.5 秒。有点随意。我不知道为什么会这样。有人知道吗?

在我的 Windows 7 本地 Apache 服务器中运行。是因为我的电脑在做某事还是因为我的硬盘碎片?我已经对我的硬盘进行碎片整理了。碎片是 0%。那么还有什么?有人遇到过这个问题吗?

问题是在我进入那部分代码之前我有很多包含。其中包括永远不会这么慢。我正在使用代码点火器框架。它包括许多文件。我什至放了完整的路径来找出它为什么会产生问题。没用。

$time_start = microtime_float();

include $plugindir."/resources/queries/$queryname".".php";

$time_end = microtime_float();
echo "elapsed seconds1 $time_end  $time_start  : ".($time_end-$time_start). " seconds";

并非一直如此。主要是第一次。有点奇怪。

【问题讨论】:

  • 一些代码会很好。我没有戴上心灵感应帽,也看不到正在发生什么查询。
  • 那个文件里面有什么?数据库调用?代码效率低?
  • 即使是空文件也同样的问题。因为如果你包含在一个方法中,它会执行那个时间而不是从缓存中找到那个文件。

标签: php performance caching include


【解决方案1】:

您实际上计算的不是包含时间,而是包含+执行时间。因此,所需的时间很大程度上取决于您在包含文件中所做的事情。您很可能在此文件中有一些长时间运行的数据库查询。
还有一件事。如果您不检查$queryname 是否有任何可能的注入,使用include $plugindir."/resources/queries/$queryname".".php"; 是非常不安全的。

【讨论】:

  • 我有点想通了,但还没有解决方案。如果相同的包含在类之上,则完全没有延迟。如果我包含在一个方法中,它的速度是 100 毫秒到 2.7 秒的变化。所以要么我需要提前包含 100 个查询 php 文件,这会占用内存。有什么想法吗?
【解决方案2】:

如果您使用的是 xdebug,请尝试在 php.ini 中更改此行:

xdebug.remote_enable=on 

到这个:

xdebug.remote_enable=off

如果你通过 localhost 连接,请改用 127.0.0.1,这似乎是Windows 8 上经常出现的问题,但总是值得一试!

【讨论】:

  • 只有在方法内部才会出现问题。我基本上包括不同的查询文件(它是在 php 中生成的查询相关数据)。而不是提前加载 100 条查询,我认为我会按需包含..但这会产生问题。如果文件的第一行包含相同的内容,则速度是瞬时的,因为它已被缓存。如果它在方法内部,则由于某种原因在调用之间没有缓存。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-25
  • 2011-10-10
  • 2011-06-13
  • 1970-01-01
  • 1970-01-01
  • 2017-05-14
相关资源
最近更新 更多