0

いくつかの小さなテストファイルのアップロードを少し再生した後、約200 MBの大きなファイルをアップロードしたかったのですが、常にタイムアウト例外が発生し、30MBのファイルをアップロードしようとしました。同じことが起こります。タイムアウトは30秒だと思いますが、アップロードが完了するまで氷河クライアントに待機するように指示することは可能ですか?

これは私が使用するコードです:

$glacier->uploadArchive(array(
            'vaultName'          => $vaultName,
            'archiveDescription' => $desc
            'body'               => $body
        ));

他のファイルでテストしたところ、同じことが起こりました。4MBの小さなファイルで試してみたところ、操作は成功しました。ファイルを1つずつ分割してアップロードすると、3番目のファイルの前後でタイムアウト例外が発生すると思いました。アウト。

次のコードでマルチアップロードも試しました

$glacier = GlacierClient::factory(array(
            'key'    => 'key',
            'secret' => 'secret',
            'region' => Region::US_WEST_2
        ));

$multiupload = $glacier->initiateMultipartUpload(array(
    'vaultName' => 'vaultName',
    'partSize' => '4194304'
));

// An array for the suffixes of the tar file
foreach($suffixes as $suffix){
$contents = file_get_contents('file.tar.gz'.$suffix);
$glacier->uploadMultipartPart(array(
    'vaultName' => 'vaultName',
    'uploadId' => $multiupload->get('uploadId'),
    'body' => $contents
));
}


$result=$glacier->completeMultipartUpload(array(
    'vaultName' => 'vaultName',
    'uploadId' => $multiupload->get('uploadId'),
));

echo $result->get('archiveId');

パラメータ範囲が欠落しています。このマルチパートアップロードがどのように機能するかを完全には理解していないと思いますが、同じタイムアウト例外が発生すると思います。だから私の質問は私が前に言ったようです。アップロードが完了するまで待つように氷河クライアントに指示することは可能ですか?

4

2 に答える 2

1

タイムアウトは、ジムジーが言ったようなスクリプトのタイムアウトのように聞こえます。

Glacierクライアントの使用については、公式のAWS PHP開発者ブログからこのブログ投稿UploadPartGeneratorをチェックアウトする必要があります。このブログ投稿では、オブジェクトを使用してGlacierにマルチパートアップロードを行う方法を示しています。異なるリクエスト/プロセスでパーツのアップロードを行う場合は、UploadPartGeneratorクラスをシリアル化できることにも注意する必要があります。

于 2013-08-22T23:58:53.140 に答える
0

これは、スクリプトのタイムアウトのように不審に聞こえます。試す

set_time_limit (120);

foreachループのすぐ内側。これにより、マルチパートファイルごとに2分間のPHPサニティタイマーが提供されます。

于 2012-12-16T16:44:12.530 に答える