既存のソースを殆ど変えずにfile_get_contents()をcURLにする
PHPで外部ファイルを読み込むとき用に用意されている、file_get_contents関数ですが、一部の外部サイトを上手く読み込めなかったり、タイムアウトを指定していてもタイムアウトされなかったりとAPIなどのデータを取得するには向いていない関数です。
なので、file_get_contents関数よりも速くで、file_get_contents関数で上手く読み込めないサイトを読み込めたりできる、cURLを既存のソースの一部を置換するだけで使用できる方法を紹介します。
curl_get_contents
以下の関数をファイルの最初に追加し、file_get_contents()をcurl_get_contents()に置き換えるだけで、file_get_contents関数がcURLになります。
function curl_get_contents( $url ){ $ch = curl_init(); curl_setopt( $ch, CURLOPT_URL, $url ); curl_setopt( $ch, CURLOPT_HEADER, false ); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); curl_setopt( $ch, CURLOPT_TIMEOUT, 5 ); curl_setopt( $ch, CURLOPT_FAILONERROR, true ); $result = curl_exec( $ch ); curl_close( $ch ); return $result; }
サンプル
file_get_contents( './foo.jpg' );
curl_get_contents( './foo.jpg' );