我将我的每个用户数据存储在一个存储桶中,并将他的用户名对象存储在一个存储桶中。就像我的桶是“my.bucket/bob1”“my.bucket/bob2”等等。我可以使用 Amazon S3 获取存储桶的大小。$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;
}