AWS SDK for PHP 버전 3을 사용한 비동기 프로그래밍 - AWS SDK for PHP

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AWS SDK for PHP 버전 3을 사용한 비동기 프로그래밍

SDK의 비동기 기능을 사용하여 명령을 동시에 전송할 수 있습니다. 작업 이름에 Async라는 접미사를 붙여 요청을 비동기적으로 전송할 수 있습니다. 그러면 요청이 시작되고 promise가 반환됩니다.

promise는 성공 시 결과 객체를 통해 이행되거나 실패 시 예외를 통해 거부됩니다. 이러한 방식으로 여러 promise를 생성하여 기본 HTTP 핸들러가 요청을 전송할 때 promise가 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(); });