AWS SDK for PHP(ver.2)のS3Clientで2GB以上のファイル
PHP(32bit版 Windows)で2GB以上のファイルサイズを扱う必要が出たので調査してみた。 AWS SDK for PHPの S3Client S3Clientで2GB以上のファイルサイズの場合、$s3->getIteratorで帰ってくるobject配列の1要素はどのようになっているのだろうか。 S3Client http://docs.aws.amazon.com/aws-sdk-php/latest/class-Aws.S3.S3Client.html 結果、ファイルサイズは文字列として返ってきた。 約10.92GBの結果は
'Size' =>
string(11) "11735575314"
となった。
array(10) {
'テストデータ.7z' =>
array(6) {
'Key' =>
string(57) "data/テストデータ.7z"
'LastModified' =>
string(24) "2014-03-19T09:20:22.000Z"
'ETag' =>
string(38) ""0a30256425793998277362ff362c070e-175""
★ 'Size' =>
string(11) "11735575314"
'Owner' =>
array(2) {
'ID' =>
string(64) "58b46d3e642ea98b3830c5d1ca08f291908ccaedf261f29110d17426756e3e6e"
'DisplayName' =>
string(6) "testaname"
}
'StorageClass' =>
string(7) "GLACIER"
}
'20110212.dat' =>
array(6) {
'Key' =>
string(58) "data/20110212.dat"
'LastModified' =>
string(24) "2014-03-01T06:37:37.000Z"
'ETag' =>
string(38) ""6062d5c3577498b032365d77ab15cc35-217""
'Size' =>
string(10) "1136066129"
'Owner' =>
array(2) {
'ID' =>
string(64) "58b46d3e6b4ea8442830c5d1ca08f291908ccaedf261629110d17426756e3e6e"
'DisplayName' =>
string(6) "testaname"
}
'StorageClass' =>
string(7) "GLACIER"
}
'env_20110212.dat' =>
array(6) {
'Key' =>
string(67) "data/env_20110212.dat"
'LastModified' =>
string(24) "2014-03-01T07:02:02.000Z"
'ETag' =>
string(38) ""77c60260c8a34c0b2e93148f738628ca-383""
'Size' =>
string(10) "2003413719"
'Owner' =>
array(2) {
'ID' =>
string(64) "58b4642e6b4ea84b3830c5d1ca062291908ccaedf261f29110d17426756e3e6e"
'DisplayName' =>
string(6) "testaname"
}
'StorageClass' =>
string(7) "GLACIER"
}
あれ、AWS SDK for PHPのlistObjectsのReturnには、Size => (int) って書いてある。
public Guzzle\Service\Resource\Model listObjects( array $args = array() ) Rest API GET Bucket (List Objects)にはSizeはStringとなってる。
Size Size in bytes of the object. Type: String Ancestor: ListBucketResult.Contents となっている。 Rest API GET Bucket (List Objects) ま、 さて、どうやって扱うか。