Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Programación asíncrona con la versión 3 AWS SDK para PHP
Puede enviar comandos de forma simultánea utilizando las características asíncronas del SDK. Puede enviar solicitudes de forma asíncrona añadiendo el sufijo Async
al nombre de la operación. Esto inicia la solicitud y devuelve una promesa.
La promesa se cumple cuando el objeto de resultado es correcto o se rechaza con una excepción en caso de error. Esto le permite crear varias promesas y hacer que envíen solicitudes HTTP de forma simultánea cuando el controlador HTTP subyacente transfiere las solicitudes.
Importaciones
require 'vendor/autoload.php'; use Aws\S3\S3Client; use Aws\Exception\AwsException;
Código de muestra
// 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();
Puede forzar una promesa para que se complete de forma síncrona utilizando el método wait
de la promesa. Forzar que se complete la promesa también "desencapsula" el estado de la promesa de forma predeterminada, lo que significa que, o bien devolverá el resultado de la promesa, o lanzará la excepción que se detectó. Al llamar a wait()
en una promesa, el proceso se bloquea hasta que se completa la solicitud HTTP y el resultado se rellena o se lanza una excepción.
Si utiliza el SDK con una biblioteca de bucles de evento, no bloquee los resultados. En su lugar, utilice el método then()
de un resultado para obtener acceso a una promesa que se resuelve o rechaza cuando se completa la operación.
Importaciones
require 'vendor/autoload.php'; use Aws\S3\S3Client; use Aws\Exception\AwsException;
Código de muestra
// 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(); });