返回不同结果的PHP microtime
问题描述:
在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,而不是获取网站内容的时间。
答
假设你的代码片段不做作的例子,这个问题大概是这样的:
data: "host=http://www.mywebsite.com",
由于您使用GET,网址,他们应该在查询字符串中传递之前进行编码。 PHP可能会在2秒内收到404s的乱码版本,而loadtime2.php
文件正在给您(大致)实际加载时间。 (您可以通过转储网址或回复来确认)
data: "host=" + encodeURIComponent(url),
P.S.在PHP中,单个ticks '
是best for URLs。