2013-08-05 6 views
8

関数は、s3サーバー上のオブジェクトを見つけるまでPHPスクリプトを一時停止しますか?waitUntilObjectExists()Amazon S3 PHP SDKメソッド、正確にはどのように機能しますか?

私はforeachループの中にイメージを1つずつアップロードしています。オブジェクトが見つかったら、イメージをローカルに削除するメソッドを呼び出し、空の場合はローカルフォルダを削除します。これは正しいことですか?おかげ

    foreach ($fileNames as $fileName) 
        { 

         $imgSize = getimagesize($folderPath . $fileName); 

         $width = (string)$imgSize[0]; 
         $height = (string)$imgSize[1]; 

         //upload the images 
         $result = $S3->putObject(array(
          'ACL'  => 'public-read', 
          'Bucket'  => $bucket, 
          'Key'  => $keyPrefix . $fileName, 
          'SourceFile' => $folderPath . $fileName, 
          'Metadata' => array(
           'w' => $width, 
           'h' => $height 
          ) 
         )); 

         $S3->waitUntilObjectExists(array(
         'Bucket' => $bucket, 
         'Key' => $keyPrefix . $fileName)); 

         $this->deleteStoreDirectory($folderPath, $fileName); 
        } 

答えて

12

waitUntilObjectExistsは、基本的には、定期的にリソースが利用可能であるかどうかを確認するために、特定の時間間隔で(ポーリング)S3をチェックウェイターです。スクリプトの実行は、リソースが見つかるまで、または最大再試行回数に達するまでブロックされます。

AWSのドキュメントは、それらを定義したよう:

ウェイターは、それが簡単にリソースをポーリングすることによって、特定の状態にリソースを入力するまで待機する簡単な方法を提供することにより、最終的には一貫性のあるシステムで動作するように作るのを助けます。

デフォルトでは、ウェイターは各試行の間に5秒の遅延でリソースを20回見つけようとします。追加のパラメータをwaitUntilObjectExistsメソッドに渡すことで、これらのデフォルト値を希望の値で上書きできます。

最大試行回数の後にウェイターがリソースを見つけることができない場合、例外がスローされます。私はそれはあなたがオブジェクトをアップロードした後、同じPHPスクリプトがしようとしない限り、waitUntilObjectExistsを呼び出すために理にかなっているとは思わない、あなたのユースケースについて

http://docs.aws.amazon.com/aws-sdk-php-2/guide/latest/feature-waiters.html

あなたは、ウェイターについての詳細を学ぶことができます後でコード内の同じオブジェクトをS3から取得します。

putObject API呼び出しが応答を返した場合、最終的にS3にオブジェクトが表示され、ローカルファイルを削除する前にこの処理が完了するまで待つ必要はありません。

+0

よろしくお願いします。今より意味をなさない –

+0

オブジェクトにすぐにアクセスする必要がない限り、ウェイターは必要ありません。 –

+0

私の場合、オブジェクトをS3バケットに転送した直後にそのオブジェクトにアクセスする必要があります。この状況での問題は、オブジェクトが要求されたときにバケットにオブジェクトが存在することがありますが、転送が完了していないため、最初のgetObjectコールで不完全なイメージが生成されます。すべて。 –

関連する問題