PHPではfile_get_contents関数とcurl()関数の両方を使って相手のWebサイトのデータを取得してローカルサーバーに保存することができますが、一般的にはfile_get_contents()関数の方が若干効率が悪くなります。はい、マルチスレッドはサポートされていますが、curl 拡張機能をオンにする必要があります。つまり、curl 関数を使用するには、curl 拡張機能をオンにする必要があり、file_get_contents 関数システムが有効になります。デフォルト。
カール拡張機能を有効にする手順は次のとおりです:
1. PHP フォルダー内の 3 つのファイル php_curl.dll、libay32.dll、および ssleay32.dll を system32 にコピーします。
2. php.ini (c:WINDOWS ディレクトリ) の extension=php_curl.dll からセミコロンを削除します。
まず 2 つの関数の簡単な例を見てみましょう
curl()関数
コードをコピー | |
$ch =curl_init("http://www.bKjia.c0m/");
curl_exec($ch); //curl_exec($ch); $ch を実行します //curl_close($ch); $ch を閉じる
|
file_get_contents関数
例
コードをコピー | |
コードをコピー | |
これはテストテキストを含むテストファイルです。
|
概要
fopen / file_get_contents はリクエストごとに DNS クエリを再実行し、DNS 情報をキャッシュしません。
ただし、CURL は DNS 情報を自動的にキャッシュします。同じドメイン名の Web ページまたは画像に対するリクエストには、DNS クエリが 1 つだけ必要です。これにより、DNS クエリの数が大幅に削減されます。
したがって、CURL のパフォーマンスは fopen/file_get_contents よりもはるかに優れています。
file_get_contents と CURL の効率と安定性の問題
コードをコピー | |
$config['context'] = stream_context_create(array('http' => array('method' => "GET",'timeout' => 5)));
|
コードをコピー | |||||||||||||
コードをコピー | |
関数curl_get_contents($url)
{ |
これは他の人がcurlとfile_get_contentsで行ったテストです:
コードは次のとおりです
1.2.31319094 | |
4.3.30553889
5.2.30124092 3.0.64326 4.0.81983113
5.0.63956594 |
では、サーバーの状況に応じて file_get_contents またはcurl() をどのように使用するのでしょうか? 以下では、function_exists 関数を使用して、PHP が関数をサポートしているかどうかを判断できます。
コードは次のとおりです
関数 vita_get_url_content($url) { | |
$ch =curl_init();
$タイムアウト = 5;
curl_setopt ($ch、CURLOPT_URL、$url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch、CURLOPT_CONNECTTIMEOUT、$timeout);
$file_contents =curl_exec($ch);
カール_クローズ($ch);
}
$file_contents を返す | true