ラボ > PHP:通信絡み

cUrlの最小限の取得系

cUrl()でよく使うヤツは自分用に関数化しているんだけど、たまにちょっとだけ使いたいときがある。そのときのサンプル

作成日:2018-08-31, 更新日:2018-08-31

最小限の取得の基本型

▼私にとっての基本型。

$result = array(
   'httpCode'    => '',
   'curlErrCode' => '',
   'curlErrInfo' => '',
);

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // curl_exec()を出力じゃなく、取得
curl_setopt($ch, CURLOPT_TIMEOUT, 30);          // タイムアウト(秒)

$source = curl_exec($ch);

// ステータスコード
$curlInfo = curl_getinfo($ch);
if ( is_array($curlInfo) && isset($curlInfo['http_code']) ) {
  $result['httpCode'] = $curlInfo['http_code'];
}
else {
  $result['httpCode'] = 'unknown';
}

// エラーがあったとき。「http_code:0」はタイムアウトなど
$curlErrNo = curl_errno($ch);
if ( 0 < $curlErrNo ) {
  $statusMessage .= 'cURL Error (' . $curlErrNo . '): ' . $curlErrOr;
  $result['curlErrCode'] = $curlErrNo;
  $result['curlErrInfo'] = curl_error($ch);
}

curl_close($ch);

// 出力
echo $source;
var_dump($result);