PHP 他のサイトを読み込む方法 file_get_contents vs curl

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なんだろうけど、どうだろう??
ちなみにファイルのアップロードもどちらでも出来る。
力尽きたので割愛。

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です