2013-10-24 122 views
1

在PHP中使用microtime函數時,我似乎遇到了一個奇怪的問題。在我的index.php,我有以下返回不同結果的PHP microtime

$.ajax({ 
url:'loadtime.php', 
datatype:"application/json", 
type:'get', 
data: "host=http://www.mywebsite.com", 
success:function(data){ 
    document.getElementById('loadtime_com').innerHTML = data; 
}, 
    error:function(){ 
    // code for error 
} 
}); 

在loadtime.php

$host = $_GET['host']; 

$time = microtime(TRUE); 
file_get_contents($host); 
$time = microtime(TRUE) - $time; 
echo $time; 

當去到我的index.php它表明下2.00秒的任何時間(這是錯誤的)。然後,我創建了另一個PHP文件名爲loadtime2.php,並改變了代碼

$host = "http://www.mywebsite.com"; 

$time = microtime(TRUE); 
file_get_contents($host); 
$time = microtime(TRUE) - $time; 
echo $time; 

然後轉到mywebsite.com/loadtime2.php測試腳本,這給了我次以上5.00秒。我找不出造成這種差異的原因,就像microtime給我時間從index.php檢索loadtime.php,而不是獲取網站內容的時間。

回答

0

假設你的代碼片段不做作的例子,這個問題大概是這樣的:

data: "host=http://www.mywebsite.com", 

由於您使用GET,網址,他們應該在查詢字符串中傳遞之前進行編碼。 PHP可能會在2秒內收到404s的亂碼版本,而loadtime2.php文件正在給您(大致)實際加載時間。 (您可以通過轉儲網址或回覆來確認)

嘗試encodeURIComponent

data: "host=" + encodeURIComponent(url), 

P.S.在PHP中,單個ticks 'best for URLs