使用 适用于 PHP 的 Amazon SDK 版本 3 进行异步编程 - 适用于 PHP 的 Amazon SDK
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 适用于 PHP 的 Amazon SDK 版本 3 进行异步编程

您可以使用开发工具包的异步功能并发发送命令。您可以在操作名称后添加 Async 后缀,异步发送请求。这样可以启动请求并返回 Promise。

如果成功,结果对象可满足 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 请求完成并填充结果,或引发异常。

如果使用具有事件循环库的开发工具包,请不要阻塞结果。请使用结果的 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(); });