章: 第5章: Web・DB・セキュリティ
決済APIや天気情報API、PHPからどうやって呼び出しますか?cURLを使えば、外部サービスとの連携がPHPから直接できます。
問題と解決策
Webアプリは単独で完結するのではなく、外部サービスと連携することが現代では当たり前です。しかし、外部APIへのリクエストは失敗することもあります—— タイムアウト、APIエラー、ネットワーク障害など。
cURLはHTTPリクエストをPHPから送るための拡張機能です。GET/POST/PUT/DELETE等を送れ、ヘッダーの設定やレスポンスの取得も細かく制御できます。エラー処理を含めた実装が実務では不可欠です。
HTTP通信手段の比較
| 手段 | 特徴 | 推奨シーン |
file_get_contents() |
簡単だが制御が限られる | 単純なGETリクエスト |
| cURL | 高機能・細かい制御が可能 | 認証付きAPI・POST送信 |
| Guzzle(ライブラリ) | 非同期・高機能 | 大規模アプリ |
チェックポイント:
curl_exec()の後にcurl_errno()でエラーを確認していますか?外部APIは必ず失敗することを前提に、エラー時の処理(リトライ・ログ記録)を実装しましょう。
コードサンプル
<?php
$ch = curl_init('https://example.com/api');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
まとめ & 次のステップ
curl_init()→curl_setopt()→curl_exec()→curl_close()の順で実行しますCURLOPT_RETURNTRANSFERをtrueにしないとレスポンスが直接出力されますcurl_errno()でエラーを確認し、失敗時の処理を必ず実装しましょう- タイムアウト設定(
CURLOPT_TIMEOUT)も本番環境では必ず指定します
次回は 日時処理 — タイムゾーンと日時フォーマットを正しく扱う方法を学びます。