Programmazione asincrona con la versione 3 AWS SDK per PHP - AWS SDK per PHP

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Programmazione asincrona con la versione 3 AWS SDK per PHP

È possibile inviare comandi simultaneamente utilizzando le funzionalità asincrone dell'SDK. È possibile inviare le richieste in modo asincrono aggiungendo un suffisso al nome dell'operazione con Async. In questo modo si avvia la richiesta e si restituisce una promessa.

La promessa viene soddisfatta con l'oggetto risultato in caso di esito positivo o rifiutata con un'eccezione in caso di errore. In questo modo è possibile creare più promesse e richiedere l'invio simultaneo di richieste HTTP quando il gestore HTTP sottostante trasferisce le richieste.

Importazioni

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

Codice di esempio

// 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();

È possibile forzare il completamento sincrono di una promessa utilizzando il metodo wait della promessa. Forzando il completamento della promessa, inoltre, "si apre" lo stato della promessa per impostazione predefinita, ovvero viene restituito l'esito della promessa oppure viene generata l'eccezione che è stata riscontrata. Quando si richiama wait() su una promessa, il processo si blocca fino a quando la richiesta HTTP non viene completata e il risultato viene popolato, oppure viene creata un'eccezione.

Quando si utilizza l'SDK con una libreria di loop eventi, non bloccare i risultati. Occorre utilizzare invece il metodo then() di un risultato per accedere a una promessa che viene risolta o rifiutata al termine dell'operazione.

Importazioni

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

Codice di esempio

// 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(); });