11

PHPでHTTPリクエストを作成するために使用する必要があるのはどれfile_get_contentsですか?curl

file_get_contents仕事をするなら、使う必要はありますかcurl?使用curlするにはもっと行が必要なようです。

例えば:

カール:

$ch = curl_init('http://www.website.com/myfile.php'); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $content); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$output = curl_exec ($ch); 
curl_close ($ch); 

file_get_contents:

$output = file_get_contents('http://www.website.com/myfile.php'.$content); 
4

3 に答える 3

17

まず第一に、cURLには設定するオプションがたくさんあります。多くのサポートされているプロトコル、ファイルのアップロード、Cookie、プロキシなど、必要なオプションを実際に設定できます。

file_get_contents()実際には、ファイルを GET または POST するだけで、結果が得られます。

ただし、いくつかの API を試し、いくつかの「ベンチマーク」を行いました。

cURL は、 端​​末で試してみるよりもはるかに高速でした。file_get_contents
time php curl.php

curl.php:

<?php 
$ch = curl_init();
$options = [
    CURLOPT_SSL_VERIFYPEER => false,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_URL            => 'http://api.local/all'
];

curl_setopt_array($ch, $options);
$data = json_decode(curl_exec($ch));
curl_close($ch);

fgc.php

<?php 
$data = json_decode(file_get_contents('http://api.local/all'));

平均 cURL はfile_get_contents、私の場合よりも 3 ~ 10 倍高速でした。api.localは、キャッシュされた JSON ファイル (約 600kb) で応答しました

偶然ではないと思いますが、ネットワークと応答時間は、現在の負荷/ネットワーク速度/応答時間などに基づいて大きく異なるため、これを正確に測定することはできません (ローカル ネットワークは変更されません)。効果 - 負荷とトラフィックも発生します)

file_get_contentsただし、特定のユースケースでは、実際にはそのほうが速い場合もあります。

そこで、簡単な関数を作成しました: https://git.io/J6s9e

于 2014-07-25T11:05:33.580 に答える
8

Curlより高速File_get_contentsです。これについて簡単なベンチマークを行いました。

file_get_contentsを使用して google.com を取得するのにかかった時間 (秒単位):

2.31319094 
2.30374217
2.21512604
3.30553889
2.30124092

CURLにかかった時間:

0.68719101
0.64675593
0.64326 
0.81983113
0.63956594
于 2016-04-08T08:09:02.823 に答える
2

参考までに、curl にさらに多くのオプションを持たせ、GET/POST メソッドを使用してパラメーターを送信することはできますか。

また、file_get_contentsパラメーターを GET/POST するためのオプションが少なくなります。

お役に立てれば...

于 2012-10-22T06:27:50.177 に答える