0

在播放了一些小测试文件后,我想上传一个更大的文件,大约 200 MB,但我总是遇到超时异常,然后我尝试上传一个 30 MB 的文件,同样的情况发生了。我认为超时是30秒,可以告诉冰川客户端等到上传完成吗?

这是我使用的代码:

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

我用其他文件测试过,同样的情况,然后我尝试了一个4MB的小文件,操作成功,我以为分割文件并一个一个上传,然后又在第三个左右出现超时异常出去。

我还尝试使用以下代码进行多重上传

$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

超时听起来像 Jimzie 所说的脚本超时。

至于使用 Glacier 客户端,您应该查看官方 AWS PHP 开发人员博客中的这篇博文UploadPartGenerator,其中展示了如何使用该对象向 Glacier 进行分段上传。如果您在不同的请求/进程中进行部分上传,您还应该记住UploadPartGenerator该类可以序列化。

于 2013-08-22T23:58:53.140 回答
0

这听起来有点像脚本超时。尝试

set_time_limit (120);

就在 foreach 循环内部。这将为您的每个多部分文件提供两分钟的 PHP 健全计时器。

于 2012-12-16T16:44:12.530 回答