2013-03-27 74 views
-1

我使用jQuery ajax显示数据表。我有一个文件,第一次需要2.5秒。有点随意。我无法弄清楚它为什么这样做。任何人有任何线索?PHP包括慢需要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"; 

并非所有的时间。主要是第一次。有点奇怪。

+4

一些代码会很好。我没有我的心灵感应上限,也看不到发生了什么查询。 – 2013-03-27 22:44:34

+1

那个文件里面是什么?数据库调用?代码效率低下? – greg 2013-03-27 22:44:56

+0

甚至是空文件相同的问题。因为如果你在一个方法中包含它,那么它就是在这样做的,而不是从缓存中找到该文件。 – 2013-03-28 01:11:02

回答

2

你正在计算不实际包括时间,但包括+执行时间。所以时间将取决于你在包含文件中做什么。很可能你在这个文件中有一些长期运行的数据库查询。
还有一件事。如果您没有检查$queryname是否有任何可能的注射,则使用include $plugindir."/resources/queries/$queryname".".php";是非常不安全的。

+0

我有点想通了,但没有解决方案。如果同样包括在班级之上,则毫不迟疑。如果我在方法中包含它,速度是100ms到2.7秒不等。因此,无论我需要包含100个查询php文件,包括提前哪些gona吃掉内存。有任何想法吗? – 2013-03-28 01:06:42

1

如果使用了XDebug,试图改变这条线在php.ini:

xdebug.remote_enable=on 

这一个:

xdebug.remote_enable=off 

如果你通过本地主机连接,使用127.0.0.1而不是,它似乎是Windows 8上的一个经常性问题,但它总是值得一试!

+0

问题只发生在方法内部。我基本上包括不同的查询文件(这是在一个PHP中生成查询相关的数据)。而不是提前加载100多个查询,我想我会包括在需求..但它造成了一个问题。如果文件的第一行中包含相同的内容,那么由于它被缓存,所以速度是非常快的。如果它是内部方法,它在调用之间不会因为某种原因而被缓存。 – 2013-03-28 01:09:57