2016-04-14 24 views
0

我嘗試調試我的緩慢php腳本提交查詢到幾個數據庫和幾個表創建一個結果頁面。在php中,什麼時候內嵌<script>才能解決?

在PHP腳本我把這樣的開始:

echo '<script>console.log("Start ",Date.now());</script>'; 

在PHP腳本結束從How can I write to console in PHP?

與同類服用。

但是,從獲得結果頁面前30秒到1分鐘,從螢幕控制檯打印的腳本開始到結束的時間差不到一秒鐘。

像這樣:

開始1460618023753

末1460618023923

所以我覺得我的誤解,當這些內聯實際上是在運行。

有人可以解釋爲什麼這樣嗎?也許建議我原則上可以調試我的PHP代碼的慢速部分?

+0

從php的角度來看,這只是一個字符串,php不會執行_at all_。這是JavaScript,它在客戶端上執行(如果有的話)。 – arkascha

+0

對於調試性能問題,你可以看一下profiler,也許是一個xdebug提供的。儘管如此,使用並不是微不足道的。一個更容易使用的替代方法是phps'tick'功能:http://php.net/manual/de/function.register-tick-function.php你可以用它來輸出一個簡單的字符串,比如一個時間戳到某些日誌文件。這會產生一系列步驟。你應該能夠發現代碼的哪一部分需要很長時間。 – arkascha

+0

php首先在服務器上編譯,並且在HTML輸出到瀏覽器之前不會運行javascript。這就是爲什麼你的JavaScript之間沒有時間差。你需要在php中獲得時間,即。將'Date.now()'改爲php的['time()'](http://php.net/manual/en/function.time.php) - >'echo'';因爲當php執行時會顯示。 – Sean

回答

0

要在php中測量時間,您需要使用php代碼。

在的遊戲內運行:

$start = time(); 

,並在年底使用

$duration = time() - $start; 
echo '<script>console.log("Duration ",' . $duration . ');</script>'; 

您也可以呼應的開始和結束,但你需要使用PHP時間:

echo '<script>console.log("Start ",' . time() . ');</script>'; 

echo '<script>console.log("End ",' . time() . ');</script>'; 
相關問題