phpからcurlを使ってみた
httpでアクセス可能なところにとあるファイルがあって、単にそれらのファイルサイズだけ取得したかっただけなのに…(フラグではありますん
ふつー(PDOとか)のphpの関数の使い方とはちょっと違ったのでメモ。
curlとは、httpにアクセスできていろいろできるよ!やったね!ライブラリ(超ざっくり
私の環境で使えるか?
$ php -i | grep curl
すればphpに組み込まれているか分かる。phpinfo()でもcURLの項目があればOK
もしなくて、windowsのxamppだったら、c:\xampp\apache\bin\php.iniとかを探せばcurlのdllが書いてあるので、コメントを外してapache再起動
使い方[概要篇]
$ch = curl_init(); // cURL使うよー curl_setopt($ch, 値, TRUEかFALSE) // 設定をごにょる curl_exec($ch); // ここで実行 curl_close($ch); // 俗に言うおまじない
使い方[基本編]
www.google.co.jpにアクセスして、その中身を表示。
$ch = curl_init(); // 起 curl_setopt($ch, CURLOPT_URL, "http://www.google.co.jp"); // 承 curl_exec($ch); // 転 curl_close($ch); // 結
実行してみて初めて分かるが、echoもしてないのにgoogle.co.jpのソースがだらーっと表示される。何これキモイ。いや、キモくもないけどさー。
使い方[URLの取得結果を変数に突っ込む篇]
$ch = curl_init(); // init curl_setopt($ch, CURLOPT_URL, "http://www.google.co.jp"); // URLをセット curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // curl_exec()の結果を文字列で返す curl_setopt($ch, CURLOPT_HEADER, true); // ヘッダも出力したい場合 $c = curl_exec($ch); // 実行 curl_close($ch); // おまじない
$cに文字列で結果が入っているので、あとは自由に料理すればよい。
使い方[ファイルサイズ取得篇]
GETしてるとネットワーク的も実行時間的にもアレなのでHEADリクエストにする。
$ch = curl_init("http://www.google.co.jp"); // 実はここでもURLをセットできる curl_setopt($ch, CURLOPT_NOBODY, TRUE); // HEADリクエストにする curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // curl_exec()の結果を文字列で返す = 標準出力になにも返さない $c = curl_exec($ch); // 実行 echo curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD); // 対象URLのコンテンツのバイト数 curl_close($ch); // おまじない
curl_getinfoで、CURLINFO_CONTENT_LENGTH_DOWNLOADを指定してやるとContent-Length:の値を返してくる。当初の目的は達成された。