2016-12-14 31 views
1

PHP用AWS SDK V3を使用しています。 AWS S3を呼び出すときに、私が対話しようとしているオブジェクトがあっても、ネットワークの問題のために、400エラーのようなエラーが発生することがあります(Bad Request RequestTimeout (client): Your socket connection to the server was not read from or written to within the timeout period)。私がする必要があるのは、再試行の仕組みを実装することです。 AWS SDKのオプションを使用してエラーを再試行する回数を指定するだけで済みます。 私は単純な試行でそれをやり直すことができることを知っていますが、私はSDKが既にこれを行うためのきれいな方法を提供しているかもしれないと考えています。 私は既に静的関数Middleware::retry()を見つけましたが、私はそれをどのように使用するか考えていません。PHp AWS S3 SDKネットワーク接続エラーで再試行

答えて

0

任意のAWSサービスクライアントクラスの新しいインスタンスを作成するときに、再試行の回数を指定することができます。

$client = new Aws\EC2\Ec2Client([ 
    'region' => 'eu-central-1', 
    'retries' => 3 
]); 

https://docs.aws.amazon.com/aws-sdk-php/v3/guide/guide/configuration.html#retries

+0

を私は、ドキュメントをチェックしているデフォルトの再試行回数が既にありますことを発見「3」。しかし、私は睡眠時間(再試行前の遅延)をどのように指定することができますか?それはすぐに再試行するように思われ、サービスに戻る時間はありません。私は 'retries'のように' delay'オプションを使用しましたが、それは有効に見えません。 – Amaynut

+0

私はconfigのパラメータ 'http' => ['delay' => 5000] 'を追加しました。私はそれが2回の再試行の間の遅延時間だと思ったが、接続に問題がない場合でもHTTPリクエスト全体を実行する時間になった。 – Amaynut

関連する問題