Hướng dẫn php get folder size - php lấy kích thước thư mục

function foldersize($path) {
  $total_size = 0;
  $files = scandir($path);

  foreach($files as $t) {
    if (is_dir(rtrim($path, '/') . '/' . $t)) {
      if ($t<>"." && $t<>"..") {
          $size = foldersize(rtrim($path, '/') . '/' . $t);

          $total_size += $size;
      }
    } else {
      $size = filesize(rtrim($path, '/') . '/' . $t);
      $total_size += $size;
    }
  }
  return $total_size;
}

function format_size($size) {
  $mod = 1024;
  $units = explode(' ','B KB MB GB TB PB');
  for ($i = 0; $size > $mod; $i++) {
    $size /= $mod;
  }

  return round($size, 2) . ' ' . $units[$i];
}

$SIZE_LIMIT = 5368709120; // 5 GB

$sql="select * from users order by id";
$result=mysql_query($sql);

while($row=mysql_fetch_array($result)) {
  $disk_used = foldersize("C:/xampp/htdocs/freehosting/".$row['name']);

  $disk_remaining = $SIZE_LIMIT - $disk_used;
  print 'Name: ' . $row['name'] . '<br>';

  print 'diskspace used: ' . format_size($disk_used) . '<br>';
  print 'diskspace left: ' . format_size($disk_remaining) . '<br><hr>';
}

PHP disk_total_space

Bất kỳ ý tưởng tại sao việc sử dụng bộ xử lý tăng quá cao hoặc 100% cho đến khi việc thực hiện tập lệnh kết thúc? Bất cứ điều gì có thể được thực hiện để tối ưu hóa nó? Hoặc có cách nào khác để kiểm tra thư mục và thư mục bên trong kích thước của nó?

Hướng dẫn php get folder size - php lấy kích thước thư mục

Đã hỏi ngày 25 tháng 1 năm 2009 lúc 19:38Jan 25, 2009 at 19:38

function GetDirectorySize($path){
    $bytestotal = 0;
    $path = realpath($path);
    if($path!==false && $path!='' && file_exists($path)){
        foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS)) as $object){
            $bytestotal += $object->getSize();
        }
    }
    return $bytestotal;
}

Ý tưởng tương tự như Janith Chinthana đề xuất. Với một vài bản sửa lỗi:

  • Chuyển đổi
    <?
        $f = 'f:/www/docs';
        $obj = new COM ( 'scripting.filesystemobject' );
        if ( is_object ( $obj ) )
        {
            $ref = $obj->getfolder ( $f );
            echo 'Directory: ' . $f . ' => Size: ' . $ref->size;
            $obj = null;
        }
        else
        {
            echo 'can not create object';
        }
    ?>
    
    3 thành RealPath
  • Chỉ thực hiện lặp lại nếu đường dẫn là hợp lệ và thư mục tồn tại
  • Bỏ qua các tệp
    <?
        $f = 'f:/www/docs';
        $obj = new COM ( 'scripting.filesystemobject' );
        if ( is_object ( $obj ) )
        {
            $ref = $obj->getfolder ( $f );
            echo 'Directory: ' . $f . ' => Size: ' . $ref->size;
            $obj = null;
        }
        else
        {
            echo 'can not create object';
        }
    ?>
    
    4 và
    <?
        $f = 'f:/www/docs';
        $obj = new COM ( 'scripting.filesystemobject' );
        if ( is_object ( $obj ) )
        {
            $ref = $obj->getfolder ( $f );
            echo 'Directory: ' . $f . ' => Size: ' . $ref->size;
            $obj = null;
        }
        else
        {
            echo 'can not create object';
        }
    ?>
    
    5
  • Tối ưu hóa cho hiệu suất

Đã trả lời ngày 28 tháng 1 năm 2014 lúc 15:19Jan 28, 2014 at 15:19

Hướng dẫn php get folder size - php lấy kích thước thư mục

SlavaslavaSlava

2.8172 Huy hiệu vàng30 Huy hiệu bạc38 Huy hiệu Đồng2 gold badges30 silver badges38 bronze badges

11

Sau đây là các giải pháp khác được cung cấp ở nơi khác:

Nếu trên máy chủ Windows:

<?
    $f = 'f:/www/docs';
    $obj = new COM ( 'scripting.filesystemobject' );
    if ( is_object ( $obj ) )
    {
        $ref = $obj->getfolder ( $f );
        echo 'Directory: ' . $f . ' => Size: ' . $ref->size;
        $obj = null;
    }
    else
    {
        echo 'can not create object';
    }
?>

Khác, nếu trên máy chủ Linux:

<?
    $f = './path/directory';
    $io = popen ( '/usr/bin/du -sk ' . $f, 'r' );
    $size = fgets ( $io, 4096);
    $size = substr ( $size, 0, strpos ( $size, "\t" ) );
    pclose ( $io );
    echo 'Directory: ' . $f . ' => Size: ' . $size;
?>

Đã trả lời ngày 25 tháng 1 năm 2009 lúc 20:01Jan 25, 2009 at 20:01

Hướng dẫn php get folder size - php lấy kích thước thư mục

SampsonsampsonSampson

262K74 Huy hiệu vàng530 Huy hiệu bạc559 Huy hiệu đồng74 gold badges530 silver badges559 bronze badges

10

Kích thước thư mục bằng cách sử dụng tệp PHP và respursiveIteratorItor.

Điều này hoạt động với bất kỳ nền tảng nào đang có phiên bản Php 5 trở lên.

/**
 * Get the directory size
 * @param  string $directory
 * @return integer
 */
function dirSize($directory) {
    $size = 0;
    foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory)) as $file){
        $size+=$file->getSize();
    }
    return $size;
} 

K-Gun

Huy hiệu vàng 11K255 Huy hiệu bạc57 Huy hiệu đồng2 gold badges55 silver badges57 bronze badges

Đã trả lời ngày 17 tháng 8 năm 2013 lúc 11:01Aug 17, 2013 at 11:01

Janith Chinthanajanith ChinthanaJanith Chinthana

3.7262 Huy hiệu vàng26 Huy hiệu bạc52 Huy hiệu Đồng2 gold badges26 silver badges52 bronze badges

2

Một ví dụ PHP thuần túy.

<?php
    $units = explode(' ', 'B KB MB GB TB PB');
    $SIZE_LIMIT = 5368709120; // 5 GB
    $disk_used = foldersize("/webData/users/");

    $disk_remaining = $SIZE_LIMIT - $disk_used;

    echo("<html><body>");
    echo('diskspace used: ' . format_size($disk_used) . '<br>');
    echo( 'diskspace left: ' . format_size($disk_remaining) . '<br><hr>');
    echo("</body></html>");


function foldersize($path) {
    $total_size = 0;
    $files = scandir($path);
    $cleanPath = rtrim($path, '/'). '/';

    foreach($files as $t) {
        if ($t<>"." && $t<>"..") {
            $currentFile = $cleanPath . $t;
            if (is_dir($currentFile)) {
                $size = foldersize($currentFile);
                $total_size += $size;
            }
            else {
                $size = filesize($currentFile);
                $total_size += $size;
            }
        }   
    }

    return $total_size;
}


function format_size($size) {
    global $units;

    $mod = 1024;

    for ($i = 0; $size > $mod; $i++) {
        $size /= $mod;
    }

    $endIndex = strpos($size, ".")+3;

    return substr( $size, 0, $endIndex).' '.$units[$i];
}

?>

Hướng dẫn php get folder size - php lấy kích thước thư mục

Ry- ♦

213K54 Huy hiệu vàng446 Huy hiệu bạc459 Huy hiệu Đồng54 gold badges446 silver badges459 bronze badges

Đã trả lời ngày 1 tháng 12 năm 2011 lúc 21:15Dec 1, 2011 at 21:15

VdBuilderVdBuildervdbuilder

11.7K2 Huy hiệu vàng23 Huy hiệu bạc29 Huy hiệu đồng2 gold badges23 silver badges29 bronze badges

3

function get_dir_size($directory){
    $size = 0;
    $files = glob($directory.'/*');
    foreach($files as $path){
        is_file($path) && $size += filesize($path);
        is_dir($path)  && $size += get_dir_size($path);
    }
    return $size;
} 

K-Gun

Huy hiệu vàng 11K255 Huy hiệu bạc57 Huy hiệu đồng2 gold badges55 silver badges57 bronze badges

Đã trả lời ngày 17 tháng 8 năm 2013 lúc 11:01Dec 3, 2014 at 7:53

Hướng dẫn php get folder size - php lấy kích thước thư mục

Janith Chinthanajanith ChinthanaAlex Kashin

3.7262 Huy hiệu vàng26 Huy hiệu bạc52 Huy hiệu Đồng6 silver badges13 bronze badges

3

Một ví dụ PHP thuần túy.

static function getTotalSize($dir)
{
    $dir = rtrim(str_replace('\\', '/', $dir), '/');

    if (is_dir($dir) === true) {
        $totalSize = 0;
        $os        = strtoupper(substr(PHP_OS, 0, 3));
        // If on a Unix Host (Linux, Mac OS)
        if ($os !== 'WIN') {
            $io = popen('/usr/bin/du -sb ' . $dir, 'r');
            if ($io !== false) {
                $totalSize = intval(fgets($io, 80));
                pclose($io);
                return $totalSize;
            }
        }
        // If on a Windows Host (WIN32, WINNT, Windows)
        if ($os === 'WIN' && extension_loaded('com_dotnet')) {
            $obj = new \COM('scripting.filesystemobject');
            if (is_object($obj)) {
                $ref       = $obj->getfolder($dir);
                $totalSize = $ref->size;
                $obj       = null;
                return $totalSize;
            }
        }
        // If System calls did't work, use slower PHP 5
        $files = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($dir));
        foreach ($files as $file) {
            $totalSize += $file->getSize();
        }
        return $totalSize;
    } else if (is_file($dir) === true) {
        return filesize($dir);
    }
}

Ry- ♦Sep 2, 2013 at 7:57

213K54 Huy hiệu vàng446 Huy hiệu bạc459 Huy hiệu ĐồngAndré Fiedler

Đã trả lời ngày 1 tháng 12 năm 2011 lúc 21:154 gold badges16 silver badges24 bronze badges

4

VdBuilderVdBuilder

$file_directory = './directory/path';
$output = exec('du -sk ' . $file_directory);
$filesize = trim(str_replace($file_directory, '', $output)) * 1024;

11.7K2 Huy hiệu vàng23 Huy hiệu bạc29 Huy hiệu đồng

Đã trả lời ngày 3 tháng 12 năm 2014 lúc 7:53Jun 27, 2012 at 2:18

1

Alex Kashinalex Kashin

5756 Huy hiệu bạc13 Huy hiệu Đồng

Nhờ Jonathan Sampson, Adam Pierce và Janith Chinthana, tôi đã thực hiện cách kiểm tra cách thực hiện nhất để có được kích thước thư mục. Nên làm việc trên máy chủ Windows và Linux.

Đã trả lời ngày 2 tháng 9 năm 2013 lúc 7:57

André Fiedlerandré Fiedler

1.0294 Huy hiệu vàng16 Huy hiệu bạc24 Huy hiệu đồng

ls -ltrR /path/to/dir |awk '{print \$5}'|awk 'BEGIN{sum=0} {sum=sum+\$1} END {print sum}'

Tôi thấy cách tiếp cận này ngắn hơn và tương thích hơn. Phiên bản Mac OS X của "DU" không hỗ trợ tùy chọn -B (hoặc --Bytes) vì một số lý do, vì vậy điều này dính vào tùy chọn tương thích hơn -K.

function GetDirectorySize($path){
    $bytestotal = 0;
    $path = realpath($path);
    if($path!==false && $path!='' && file_exists($path)){
        foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS)) as $object){
            $bytestotal += $object->getSize();
        }
    }
    return $bytestotal;
}
0

Trả về các tập tin $ trong byte.Apr 23, 2015 at 14:36

Hướng dẫn php get folder size - php lấy kích thước thư mục

halfpastfour.amhalfpastfour.amhalfpastfour.am

Đã trả lời ngày 27 tháng 6 năm 2012 lúc 2:183 gold badges42 silver badges60 bronze badges

Mặc dù đã có nhiều câu trả lời cho bài đăng này, tôi cảm thấy tôi phải thêm một tùy chọn khác cho các máy chủ Unix chỉ trả về tổng của tất cả các kích thước tệp trong thư mục (đệ quy).

function GetDirectorySize($path){
    $bytestotal = 0;
    $path = realpath($path);
    if($path!==false && $path!='' && file_exists($path)){
        foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS)) as $object){
            $bytestotal += $object->getSize();
        }
    }
    return $bytestotal;
}
1

Nếu bạn nhìn vào câu trả lời của Jonathan, anh ấy sẽ sử dụng lệnh

<?
    $f = 'f:/www/docs';
    $obj = new COM ( 'scripting.filesystemobject' );
    if ( is_object ( $obj ) )
    {
        $ref = $obj->getfolder ( $f );
        echo 'Directory: ' . $f . ' => Size: ' . $ref->size;
        $obj = null;
    }
    else
    {
        echo 'can not create object';
    }
?>
6. Lệnh này sẽ trả về tổng kích thước thư mục nhưng các giải pháp PHP thuần túy được đăng bởi những người khác ở đây sẽ trả về tổng của tất cả các kích thước tệp. Sự khác biệt lớn!Jan 31, 2012 at 9:23

Những gì cần chú ýAdam Pierce

Khi chạy

<?
    $f = 'f:/www/docs';
    $obj = new COM ( 'scripting.filesystemobject' );
    if ( is_object ( $obj ) )
    {
        $ref = $obj->getfolder ( $f );
        echo 'Directory: ' . $f . ' => Size: ' . $ref->size;
        $obj = null;
    }
    else
    {
        echo 'can not create object';
    }
?>
6 trên một thư mục mới được tạo, nó có thể trả về
<?
    $f = 'f:/www/docs';
    $obj = new COM ( 'scripting.filesystemobject' );
    if ( is_object ( $obj ) )
    {
        $ref = $obj->getfolder ( $f );
        echo 'Directory: ' . $f . ' => Size: ' . $ref->size;
        $obj = null;
    }
    else
    {
        echo 'can not create object';
    }
?>
8 thay vì
<?
    $f = 'f:/www/docs';
    $obj = new COM ( 'scripting.filesystemobject' );
    if ( is_object ( $obj ) )
    {
        $ref = $obj->getfolder ( $f );
        echo 'Directory: ' . $f . ' => Size: ' . $ref->size;
        $obj = null;
    }
    else
    {
        echo 'can not create object';
    }
?>
9. Điều này thậm chí có thể trở nên khó hiểu hơn sau khi đã xóa các tệp khỏi thư mục được đề cập, có
<?
    $f = 'f:/www/docs';
    $obj = new COM ( 'scripting.filesystemobject' );
    if ( is_object ( $obj ) )
    {
        $ref = $obj->getfolder ( $f );
        echo 'Directory: ' . $f . ' => Size: ' . $ref->size;
        $obj = null;
    }
    else
    {
        echo 'can not create object';
    }
?>
6 báo cáo tổng kích thước thư mục không tương ứng với tổng số kích thước của các tệp trong đó. Tại sao? Lệnh
<?
    $f = 'f:/www/docs';
    $obj = new COM ( 'scripting.filesystemobject' );
    if ( is_object ( $obj ) )
    {
        $ref = $obj->getfolder ( $f );
        echo 'Directory: ' . $f . ' => Size: ' . $ref->size;
        $obj = null;
    }
    else
    {
        echo 'can not create object';
    }
?>
6 trả về một báo cáo dựa trên một số cài đặt tệp, như Hermann Ingjaldsson đã nhận xét về bài đăng này.22 gold badges69 silver badges88 bronze badges

1

Giải pháp

function GetDirectorySize($path){
    $bytestotal = 0;
    $path = realpath($path);
    if($path!==false && $path!='' && file_exists($path)){
        foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS)) as $object){
            $bytestotal += $object->getSize();
        }
    }
    return $bytestotal;
}
2

Để tạo thành một giải pháp hoạt động giống như một số tập lệnh chỉ dành cho PHP được đăng ở đây, bạn có thể sử dụng lệnh

<?
    $f = './path/directory';
    $io = popen ( '/usr/bin/du -sk ' . $f, 'r' );
    $size = fgets ( $io, 4096);
    $size = substr ( $size, 0, strpos ( $size, "\t" ) );
    pclose ( $io );
    echo 'Directory: ' . $f . ' => Size: ' . $size;
?>
2 và gửi nó đến
<?
    $f = './path/directory';
    $io = popen ( '/usr/bin/du -sk ' . $f, 'r' );
    $size = fgets ( $io, 4096);
    $size = substr ( $size, 0, strpos ( $size, "\t" ) );
    pclose ( $io );
    echo 'Directory: ' . $f . ' => Size: ' . $size;
?>
3 như thế này:Oct 26, 2018 at 6:16

Hướng dẫn php get folder size - php lấy kích thước thư mục

Là một hàm PHP, bạn có thể sử dụng một cái gì đó như thế này:akshaypjoshi

Đã trả lời ngày 23 tháng 4 năm 2015 lúc 14:361 gold badge15 silver badges24 bronze badges

5.5543 Huy hiệu vàng42 Huy hiệu bạc60 Huy hiệu Đồng

  1. Ví dụ Linux của Johnathan Sampson không hoạt động tốt cho tôi. Đây là phiên bản cải tiến:
  2. Đã trả lời ngày 31 tháng 1 năm 2012 lúc 9:23
  3. Adam Pierceadam Pierce
  4. 32.8K22 Huy hiệu vàng69 Huy hiệu bạc88 Huy hiệu đồng

Nó hoạt động hoàn toàn tốt.Jan 25, 2009 at 19:56

Đã trả lời ngày 26 tháng 10 năm 2018 lúc 6:16Douglas Leeder

Akshaypjoshiakshaypjoshi9 gold badges91 silver badges136 bronze badges

1.2161 Huy hiệu vàng15 Huy hiệu bạc24 Huy hiệu đồng

Có một số điều bạn có thể làm để tối ưu hóa tập lệnh-nhưng thành công tối đa sẽ làm cho nó bị ràng buộc thay vì ràng buộc CPU:

Tính toán
<?
    $f = './path/directory';
    $io = popen ( '/usr/bin/du -sk ' . $f, 'r' );
    $size = fgets ( $io, 4096);
    $size = substr ( $size, 0, strpos ( $size, "\t" ) );
    pclose ( $io );
    echo 'Directory: ' . $f . ' => Size: ' . $size;
?>
4 bên ngoài vòng lặp.

Tạo

<?
    $f = './path/directory';
    $io = popen ( '/usr/bin/du -sk ' . $f, 'r' );
    $size = fgets ( $io, 4096);
    $size = substr ( $size, 0, strpos ( $size, "\t" ) );
    pclose ( $io );
    echo 'Directory: ' . $f . ' => Size: ' . $size;
?>
5 Bài kiểm tra bên ngoài - nó không cần phải thống kê đường dẫn

Tính toán

<?
    $f = './path/directory';
    $io = popen ( '/usr/bin/du -sk ' . $f, 'r' );
    $size = fgets ( $io, 4096);
    $size = substr ( $size, 0, strpos ( $size, "\t" ) );
    pclose ( $io );
    echo 'Directory: ' . $f . ' => Size: ' . $size;
?>
6 một lần mỗi vòng - Bên trong 2) và đưa 1) vào tài khoản.Aug 14, 2014 at 17:40

Tính toán

<?
    $f = './path/directory';
    $io = popen ( '/usr/bin/du -sk ' . $f, 'r' );
    $size = fgets ( $io, 4096);
    $size = substr ( $size, 0, strpos ( $size, "\t" ) );
    pclose ( $io );
    echo 'Directory: ' . $f . ' => Size: ' . $size;
?>
7 một lần thay vì mỗi cuộc gọi?Fernando

Đã trả lời ngày 25 tháng 1 năm 2009 lúc 19:5612 silver badges13 bronze badges

Douglas Leederdouglas Leeder

function GetDirectorySize($path){
    $bytestotal = 0;
    $path = realpath($path);
    if($path!==false && $path!='' && file_exists($path)){
        foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS)) as $object){
            $bytestotal += $object->getSize();
        }
    }
    return $bytestotal;
}
4

51.3k9 Huy hiệu vàng91 Huy hiệu bạc136 Huy hiệu Đồng

function GetDirectorySize($path){
    $bytestotal = 0;
    $path = realpath($path);
    if($path!==false && $path!='' && file_exists($path)){
        foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS)) as $object){
            $bytestotal += $object->getSize();
        }
    }
    return $bytestotal;
}
5

PHP Nhận kích thước thư mục (có truy cập FTP)Nov 26, 2016 at 13:24

Hướng dẫn php get folder size - php lấy kích thước thư mục

Sau khi làm việc chăm chỉ, mã này hoạt động tuyệt vời !!!! Và tôi muốn chia sẻ với cộng đồng (bởi Mundialsys)hugsbrugs

function GetDirectorySize($path){
    $bytestotal = 0;
    $path = realpath($path);
    if($path!==false && $path!='' && file_exists($path)){
        foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS)) as $object){
            $bytestotal += $object->getSize();
        }
    }
    return $bytestotal;
}
32 gold badges27 silver badges34 bronze badges

Mã tốt! Fernando

function GetDirectorySize($path){
    $bytestotal = 0;
    $path = realpath($path);
    if($path!==false && $path!='' && file_exists($path)){
        foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS)) as $object){
            $bytestotal += $object->getSize();
        }
    }
    return $bytestotal;
}
6

Đã trả lời ngày 18 tháng 7 năm 2018 lúc 23:54Jul 18, 2018 at 23:54

Hướng dẫn php get folder size - php lấy kích thước thư mục

Nếu bạn được lưu trữ trên Linux:

function GetDirectorySize($path){
    $bytestotal = 0;
    $path = realpath($path);
    if($path!==false && $path!='' && file_exists($path)){
        foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS)) as $object){
            $bytestotal += $object->getSize();
        }
    }
    return $bytestotal;
}
7

Nó tốt hơn foreach

Đã trả lời ngày 16 tháng 5 năm 2020 lúc 17:58May 16, 2020 at 17:58

Hướng dẫn php get folder size - php lấy kích thước thư mục

Farzafarzafarza

Huy hiệu đồng 2111 bronze badge

0

Về ví dụ Linux của Johnathan Sampson, hãy coi chừng khi bạn đang thực hiện Intval về kết quả của chức năng "Du", nếu kích thước> 2GB, nó sẽ tiếp tục hiển thị 2GB.

Replace:

function GetDirectorySize($path){
    $bytestotal = 0;
    $path = realpath($path);
    if($path!==false && $path!='' && file_exists($path)){
        foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS)) as $object){
            $bytestotal += $object->getSize();
        }
    }
    return $bytestotal;
}
8

by:

function GetDirectorySize($path){
    $bytestotal = 0;
    $path = realpath($path);
    if($path!==false && $path!='' && file_exists($path)){
        foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS)) as $object){
            $bytestotal += $object->getSize();
        }
    }
    return $bytestotal;
}
9

Giả sử chức năng "DU" của bạn trả về kích thước được phân tách bằng không gian theo sau là tên thư mục/tệp.

Đã trả lời ngày 17 tháng 8 năm 2016 lúc 12:06Aug 17, 2016 at 12:06

Chỉ là một chức năng khác sử dụng các hàm PHP gốc.

<?
    $f = 'f:/www/docs';
    $obj = new COM ( 'scripting.filesystemobject' );
    if ( is_object ( $obj ) )
    {
        $ref = $obj->getfolder ( $f );
        echo 'Directory: ' . $f . ' => Size: ' . $ref->size;
        $obj = null;
    }
    else
    {
        echo 'can not create object';
    }
?>
0

Lưu ý: Hàm này trả về kích thước tệp, không phải kích thước trên đĩa

Đã trả lời ngày 21 tháng 1 năm 2017 lúc 0:50Jan 21, 2017 at 0:50

Hướng dẫn php get folder size - php lấy kích thước thư mục

Kế toán kế toán مAccountant م

6.4553 huy hiệu vàng41 Huy hiệu bạc57 Huy hiệu đồng3 gold badges41 silver badges57 bronze badges

Phát triển từ Nate Haugs Trả lời Tôi đã tạo một chức năng ngắn cho dự án của mình:

<?
    $f = 'f:/www/docs';
    $obj = new COM ( 'scripting.filesystemobject' );
    if ( is_object ( $obj ) )
    {
        $ref = $obj->getfolder ( $f );
        echo 'Directory: ' . $f . ' => Size: ' . $ref->size;
        $obj = null;
    }
    else
    {
        echo 'can not create object';
    }
?>
1

Đã trả lời ngày 13 tháng 3 năm 2013 lúc 14:20Mar 13, 2013 at 14:20

Hướng dẫn php get folder size - php lấy kích thước thư mục

Một giải pháp một lớp lót.Dẫn đến byte.

<?
    $f = 'f:/www/docs';
    $obj = new COM ( 'scripting.filesystemobject' );
    if ( is_object ( $obj ) )
    {
        $ref = $obj->getfolder ( $f );
        echo 'Directory: ' . $f . ' => Size: ' . $ref->size;
        $obj = null;
    }
    else
    {
        echo 'can not create object';
    }
?>
2

Đã thêm tiền thưởng: Bạn chỉ có thể thay đổi mặt nạ tệp thành bất cứ điều gì bạn thích và chỉ đếm một số tệp nhất định (ví dụ: bằng cách mở rộng).

Đã trả lời ngày 13 tháng 6 năm 2018 lúc 1:16Jun 13, 2018 at 1:16

2