PHP microtime возвращает разные результаты
Кажется, у меня возникает странная проблема при использовании функции microtime в PHP. На моем index.php у меня есть следующее
$.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 дает мне время для получения loadtime.php из index.php вместо того, чтобы получать содержимое сайта.
1 ответ
Предполагая, что ваши фрагменты кода не являются надуманными примерами, проблема, вероятно, заключается в следующем:
data: "host=http://www.mywebsite.com",
Поскольку вы используете GET, URL-адреса должны быть закодированы, прежде чем они будут переданы в строке запроса. PHP, вероятно, получает искаженную версию URL, которая 404s за 2 секунды, тогда как loadtime2.php
файл дает вам (примерно) фактическое время загрузки. (Вы можете подтвердить это, сбросив URL или ответ)
Попробуйте кодировать URIComponent.
data: "host=" + encodeURIComponent(url),
PS В PHP одиночные галочки '
лучше всего подходят для URL.