GuzzleHttpを使用したタイムアウトの設定方法


  1. GuzzleHttpのインストール: まず、Composerを使用してGuzzleHttpをインストールします。以下のコマンドを実行してください。
composer require guzzlehttp/guzzle
  1. 基本的なタイムアウトの設定: タイムアウトを設定するには、GuzzleHttp\Clientのインスタンスを作成し、timeoutオプションを指定します。以下は基本的な例です。
use GuzzleHttp\Client;
$client = new Client([
    'timeout' => 5, // タイムアウトを5秒に設定
]);
$response = $client->get('http://example.com');

上記の例では、タイムアウトを5秒に設定しています。もしリクエストが5秒以上かかる場合、タイムアウトエラーが発生します。

  1. エラーハンドリング: タイムアウトエラーが発生した場合、GuzzleHttpはGuzzleHttp\Exception\RequestExceptionをスローします。この例外をキャッチして、適切なエラーハンドリングを行うことができます。
use GuzzleHttp\Client;
use GuzzleHttp\Exception\RequestException;
try {
    $client = new Client([
        'timeout' => 5,
    ]);
    $response = $client->get('http://example.com');
} catch (RequestException $e) {
    if ($e->hasResponse()) {
        $statusCode = $e->getResponse()->getStatusCode();
        // エラーレスポンスの処理
    } else {
        // タイムアウトエラーの処理
    }
}

上記の例では、hasResponse()メソッドを使用して、エラーレスポンスがあるかどうかを確認しています。エラーレスポンスが存在する場合、ステータスコードを取得して適切な処理を行います。エラーレスポンスがない場合は、タイムアウトエラーとして処理します。