我想要獲取文件夾的大小而不循環laravel中的所有文件。該文件夾位於Amazon S3中。我目前的代碼是:使用laravel獲取亞馬遜s3中文件夾的大小
$files = Storage::allFiles($dir);
foreach ($files as $file) {
$size+= Storage::size($file);
}
我想避免循環有什麼辦法來實現這一點。
我想要獲取文件夾的大小而不循環laravel中的所有文件。該文件夾位於Amazon S3中。我目前的代碼是:使用laravel獲取亞馬遜s3中文件夾的大小
$files = Storage::allFiles($dir);
foreach ($files as $file) {
$size+= Storage::size($file);
}
我想避免循環有什麼辦法來實現這一點。
沒有遞歸循環的方式來計算文件夾的大小是沒有辦法的。
快速命令行解決方案使用du
。
du -hs /path/to/directory
將輸出磁盤使用情況。
-h
是爲了得到「人類可讀的」數字,例如,得到的,而不是143260(以KB大小)-s
是彙總(否則你會得到的不僅僅是該文件夾的大小,但也爲單獨的文件夾中的所有內容)最近亞馬遜已更新其功能我想知道他們是否提供任何方法 – Salini
Amazon CloudWatch提供了存儲在存儲桶中的對象數量和佔用的存儲空間的自動度量標準。我不確定這些指標多久更新一次,但這是最簡單的方法。但是,這將測量整個存儲桶而不僅僅是一個特定的文件夾。
你,如果你能處理一個天大的統計,是最新發布的「S3存儲清單」功能的其他選項。
S3可以拿出有你所有的物體的文件夾中的庫存,包括大小每日(或每週)文件:
http://docs.aws.amazon.com/AmazonS3/latest/dev/storage-inventory.html
亞馬遜S3庫存的工具之一Amazon S3提供幫助 管理您的存儲。您可以使用Amazon S3清單簡化並加快業務工作流程 和大數據作業,Amazon S3清單提供 預定的替代Amazon S3同步列表API操作。 Amazon S3清單每週或每週提供一個逗號分隔值(CSV)平面文件 輸出您的對象及其相應的元數據,用於S3存儲桶或共享前綴(即,名稱爲 的對象從一個普通的字符串開始)。
您可以配置在清單中包含哪些對象元數據, 是否列出的所有對象版本或僅當前版本,其中以 店的庫存清單平面文件輸出,以及是否產生在每天的 庫存或每週。您可以爲一個存儲桶配置多個清單 列表。有關定價的信息,請參閱 Amazon S3定價。
http://stackoverflow.com/a/478161/7398574,看看它是否可以幫助你.. !! –