私は他の Web サイトからコンテンツをキャプチャする多くの製品に携わっており、便利で高速な file_get_contents 関数の使用には慣れていますが、次の例に従ってタイムアウトを設定しても、常に取得に失敗するという問題に遭遇します。マニュアルに従っても、ほとんどの場合機能しません:
コードをコピー コードは次のとおりです:
$config['context'] = stream_context_create(array('http' => array(' method' => "GET",
'timeout' => 5//このタイムアウトは不安定で、動作しないことがよくあります
)
));
このとき、サーバーの接続プールを見ると、同様のエラーがたくさん見つかり、頭が痛くなるでしょう:
file_get_contents(http://***): ストリームを開けませんでした...
最後の手段として、curl ライブラリをインストールして次のように書きました。関数の置き換え:
コードをコピーします コードは次のとおりです:
関数 curl_file_get_contents($durl{
$ch = curl_init( );
curl_setopt($ch,,$durl);
curl_setopt<スパン スタイル="color:#009900">($ch,< /span> CURLOPT_TIMEOUT, );
curl_setopt($ch,< ;/スパン> CURLOPT_USERAGENT、 _USERAGENT_);
curl_setopt($ch、CURLOPT_REFERER、_REFERER_)スパン>;
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1) /span>;
$r = curl_exec( $ch);
curl_close($ch);
return $r;
}
したがって、実際のネットワークの問題以外の問題はなくなりました。
これは他の人が行ったcurlとfile_get_contentsに関するテストです:
file_get_contentsがgoogle.comをクロールするのにかかる秒数: 092
カールの使用時間:
0.68719101
0.64675593
0.64326
0.81983113
0.63956594
大きなギャップはありますか?あはは、私の経験から言えば、これら 2 つのツールは速度が異なるだけでなく、安定性も異なります。ネットワーク データ キャプチャの安定性に対する要求が高い友人には、安定して高速であるだけでなく、ブラウザを偽装してターゲット アドレスを偽装することもできる、上記のcurl_file_get_contents 関数を使用することをお勧めします。
http://www.bkjia.com/PHPjc/327449.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/327449.html技術記事私は他の Web サイトからコンテンツをキャプチャする製品を数多く作成しており、便利で高速な file_get_contents 関数の使用には慣れていますが、マニュアルの例に従って設定しても、ファイルを取得できないという問題が常に発生します。 ...