2013-03-27 73 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