0

私はオンラインjson URLの読み取りに使用していますが、リクエストを高速化するためのアドバイスをインストールfile_get_contentsしていませんcURL

ありがとう、マリアナ

4

4 に答える 4

1

簡単なベンチマークを実行します。

<?php
$start = microtime(true);
for ($i=0;$i<=10;$i++){
    $handle = fopen("http://example.com/", "r");
    while (!feof($handle)) {
        $result .= fread($handle, 1024);
    }
    fclose($handle);
}
$end = microtime(true);
$time = $end - $start;

echo "Did fopen test in $time seconds<br />\n";
?> 

6.1602981090546 秒で fopen テストを実行しました

<?php
//file_get_contents is basically a wrapper for the above fopen so hence not much of a difference
$start = microtime(true);
for ($i=0;$i<=10;$i++){
    $result = file_get_contents('http://example.com');
}
$end = microtime(true);
$time = $end - $start;

echo "Did file_get_contents test in $time seconds<br />\n";
?>

file_get_contents テストは 6.5289459228516 秒で完了しました

<?php
$start = microtime(true);
for ($i=0;$i<=10;$i++){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "http://example.com");
    curl_setopt($ch, CURLOPT_HEADER, 0);
    $result = curl_exec($ch);
}
$end = microtime(true);
$time = $end - $start;

echo "Did cUrl test in $time seconds<br />\n";
?>

2.9657130241394 秒で cUrl テストを行いました

cURL は圧勝です... より良いホストを探す時が来ました

于 2012-04-09T15:43:44.797 に答える
0

リクエストをより速くする方法は実際にはありません。データがあまり変更されない場合は、データをローカルにキャッシュすることができます。

擬似コード:

if (get_modification_time_of_file('cached.json') < time() - 300) {
    download_file()
} else {
    read_locally()
}
于 2012-04-09T15:29:59.147 に答える
0

いずれにせよ速いはずです。
http://www.ebrueggeman.com/blog/php_benchmarking_fopen

もっと良いことはありません。

于 2012-04-09T15:28:50.697 に答える
0

2 つのオプションがあります。

1: fopen/file_get_contents 関数を使用する

2: クライアント側のブリッジを設定し、AJAX を使用して POST メソッド経由で php に送信します。次に、json_decode を使用して PHP で取得します。

于 2012-04-09T15:33:54.670 に答える