1

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秒未満の時間が表示されます(これは間違っています)。次に、loadtime2.php という別の 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 秒を超える時間が得られます。この不一致の原因を突き止めることはできません。ウェブサイトのコンテンツを取得する時間ではなく、index.php から loadtime.php を取得する時間がマイクロタイムによって与えられているようです。

4

1 に答える 1

0

コード スニペットが不自然な例ではないと仮定すると、問題はおそらく次のとおりです。

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

GET を使用しているため、URL はクエリ文字列に渡す前にエンコードする必要があります。PHP はおそらく 2 秒で 404 になる文字化けしたバージョンの URL を受信して​​いますが、loadtime2.phpファイルは (おおまかに) 実際の読み込み時間を示しています。(これは、URL または応答をダンプすることで確認できます)

encodeURIComponentを試してください。

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

PS PHP では、シングルティック'URL に最適です

于 2014-04-29T16:34:52.437 に答える