各ユーザーのデータをバケットに保存し、ユーザー名オブジェクトをバケット内に保存しています。私のバケツは「my.bucket/bob1」「my.bucket/bob2」などです。AmazonS3を使用してバケットのサイズを取得できます。$s3->get_bucket_filesize($bucket,true);
しかし、使用しようとした「my.bucket/bob1」のサイズを計算する必要があります
$s3->get_object_filesize($bucket, "bob1");
しかし、これはそのオブジェクトのサイズのみを返します。これは、クライアント側ではフォルダーのように扱っているため、0です。
しかし、コストと時間の効率的な方法でユーザーのフォルダーレベルのサイズを取得する必要があります。
編集:
以下のコードで使用しかし、これは非常に遅く、1KBから1GB +までの何千ものファイルがあり、このコードには時間がかかりすぎます。
function get_size($bucket,$path,$s3){
$size = 0;
$response = $s3->list_objects($bucket,array(
'prefix' => $path.'/'
));
foreach ($response->body as $object)
{
//print_r($object);
$object->Key.'('.$object->Size.')</br>';
$size = $size+$object->Size;
}
// $size = number_format($size / 1024 / 1024, 2);
return $size;
}