file_get_contents vs curl
phpで他のサイトを読み込む時、file_get_contentsにするかcurlにするかいつも迷う。
なんとなく、シンプルにgetしたい時は、file_get_contentsを使い
postの時は、curlを使っている感じだけど2つを比べてみた。
GET
- file_get_contents
$res = file_get_contents('http://dummy.com?code=abc');
- curl
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://dummy.com?code=def');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$res = curl_exec($ch);
POST
- file_get_contents
$data = array(
"para" => "abc"
);
$data = http_build_query($data, "", "&");
// header
$header = array(
"Content-Type: application/x-www-form-urlencoded",
"Content-Length: ".strlen($data)
);
$context = array(
"http" => array(
"method" => "POST",
"header" => implode("\r\n", $header),
"content" => $data
)
);
$res = file_get_contents('http://dummy.com', false, stream_context_create($context));
- curl
$data = array(
"para" => "def"
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://dummy.com');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$res = curl_exec($ch);
う~ん、なんとなく正しい?綺麗に書ける?のはcurlなんだろうけど、どうだろう??
ちなみにファイルのアップロードもどちらでも出来る。
力尽きたので割愛。