2013-10-24 124 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