あなたは、代わりに、あなただけの最初の500のバイトをダウンロードします
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/');
curl_setopt($ch, CURLOPT_RANGE, '0-500');
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
curl_close($ch);
echo $result;
を使用することができ、ちょうど最初の1000個の文字をつかむためにSUBSTRを使用することができます。私は(http://www.focalstrategy.com/)私のサイト上でそれを実行すると、私が手
$url = 'http://www.example.com/';
$range = array();
$repeats = 10;
function average($a){
return array_sum($a)/count($a) ;
}
for ($i=0;$i<$repeats;$i++) {
$time_start = microtime(true);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RANGE, '0-500');
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
$time_end = microtime(true);
$time = $time_end - $time_start;
curl_close($ch);
$range[] = $time;
}
echo "With range: average = ".round(average($range),2)." seconds (Min: ".round(min($range),2).", Max: ".round(max($range),2).")\n";
$range = array();
for ($i=0;$i<$repeats;$i++) {
$time_start = microtime(true);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
$time_end = microtime(true);
$time = $time_end - $time_start;
curl_close($ch);
$range[] = $time;
}
echo "Without range: average = ".round(average($range),2)." seconds (Min: ".round(min($range),2).", Max: ".round(max($range),2).")\n";
:あなたは、この非常に醜いゴミのようなコードを実行して、ベンチできるhttp://en.wikipedia.org/wiki/PHPに対する
With range: average = 0.38 seconds (Min: 0.35, Max: 0.41)
Without range: average = 0.56 seconds (Min: 0.53, Max: 0.7)
は、私が手:
Stack Overflowに対する
With range: average = 0.11 seconds (Min: 0.05, Max: 0.5)
Without range: average = 0.48 seconds (Min: 0.34, Max: 0.78)
私が手:
With range: average = 1.31 seconds (Min: 1.1, Max: 1.46)
Without range: average = 1.37 seconds (Min: 1.18, Max: 1.7)
とはeBayに対して私が取得:
With range: average = 1.75 seconds (Min: 1.56, Max: 1.99)
Without range: average = 1.74 seconds (Min: 1.51, Max: 2.14)
あなたはSOとeBay範囲要求をサポートしていないことをテストして見ることができます。
要するに、これをサポートするサイトはスピードアップし、そうでないサイトはコード全体を取得します。
これはほとんどが悪いニュースになるでしょう。しかし、 "curl_multi"を使用すると、一度に複数の接続を実行できます。完了すると、解析し、キューから新しいURLを取得してダウンロードを開始します。 – DanRedux
また、 "title"($ titleArrのインデックス0)の最初の出現を取得してはいけませんか?現在、2番目のインデックスを取得しています(配列は0から始まることに注意してください)。 – DanRedux
これはまだ悪いニュースです。複数のクロールを実行しても何も高速化されません。 –