AWS SDK for PHP バージョン 3 を使用した非同期プログラミング - AWS SDK for PHP

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS SDK for PHP バージョン 3 を使用した非同期プログラミング

SDK の非同期機能を使用して、複数のコマンドを同時に送信できます。オペレーション名の後に Async を付けることによって、リクエストを非同期的に送信できます。そうすると、そのリクエストが開始されて promise が返されます。

その promise には、成功すると結果オブジェクトが満たされ、失敗すると例外で拒否されます。これにより、複数の promise を作成して、基になる HTTP ハンドラーがリクエストを転送するときに複数の HTTP リクエストを同時に送信できるようになります。

インポート

require 'vendor/autoload.php'; use Aws\S3\S3Client; use Aws\Exception\AwsException;

サンプルコード

// Create an SDK class used to share configuration across clients. $sdk = new Aws\Sdk([ 'region' => 'us-west-2' ]); // Use an Aws\Sdk class to create the S3Client object. $s3Client = $sdk->createS3(); //Listing all S3 Bucket $CompleteSynchronously = $s3Client->listBucketsAsync(); // Block until the result is ready. $CompleteSynchronously = $CompleteSynchronously->wait();

promise の wait メソッドを使用すると、promise が同期的に完了するように強制できます。promise が同期的に完了するように強制すると、デフォルトでは、その promise の状態が「ラップ解除」されます。つまり、promise の結果が返されるか、または検出された例外がスローされます。promise の wait() を呼び出した場合、そのプロセスは HTTP リクエストが完了するまでブロックされ、結果が入力されるかまたは例外がスローされます。

イベントループライブラリで SDK を使用する場合は、結果はブロックしないでください。代わりに、オペレーションが完了したときに、結果の then() メソッドを使用して、解決または拒否された promise にアクセスします。

インポート

require 'vendor/autoload.php'; use Aws\S3\S3Client; use Aws\Exception\AwsException;

サンプルコード

// Create an SDK class used to share configuration across clients. $sdk = new Aws\Sdk([ 'region' => 'us-west-2' ]); // Use an Aws\Sdk class to create the S3Client object. $s3Client = $sdk->createS3();
$promise = $s3Client->listBucketsAsync(); $promise ->then(function ($result) { echo 'Got a result: ' . var_export($result, true); }) ->otherwise(function ($reason) { echo 'Encountered an error: ' . $reason->getMessage(); });