0

フォルダーのディレクトリサイズを取得する方法を理解する必要があります。

機能するコードphp.netから取得されます

$SSH_CONNECTION= ssh2_connect('xx.xxx.xx.xx', xx);
ssh2_auth_password($SSH_CONNECTION, 'xxxxxxx', 'xxxxxxxxxxxxx');

function scanFilesystem($dir) {
    $tempArray = array();
    $handle = opendir($dir);
  // List all the files
    while (false !== ($file = readdir($handle))) {
    if (substr("$file", 0, 1) != "."){
           if(is_dir($file)){
            $tempArray[$file]=scanFilesystem("$dir/$file");
        } else {
            $tempArray[]=$file;
        }
    }
    }
   closedir($handle);
  return $tempArray;
}


$sftp = ssh2_sftp($SSH_CONNECTION);

//code to get listing of all OUTGOING files
$dir = "ssh2.sftp://$sftp//home/user/mail/websiteaddress.com.au/janedoe";
$outgoing = scanFilesystem($dir);
sort($outgoing);
print_r($outgoing);

したがって、print_r から結果を取得しますが、janedoe のフォルダー サイズを取得するにはどうすればよいですか?

$outgoing の出力は次のとおりです。

array(4) { 
[0]=> string(3) "cur" 
[1]=> string(11) "maildirsize" 
[2]=> string(3) "new" 
[3]=> string(3) "tmp" 
} 
4

1 に答える 1

0

戻り配列にファイルサイズ アキュムレータを追加できます。

function scanFilesystem($dir) {
    $tempArray = array();
    $tempArray['total_size'] = 0;
    $handle = opendir($dir);
  // List all the files
    while (false !== ($file = readdir($handle))) {
    if (substr("$file", 0, 1) != "."){
           if(is_dir($file)){
            $tempArray[$file]=scanFilesystem("$dir/$file");
            $tempArray['total_size'] += $tempArray[$file]['total_size'];
        } else {
            $tempArray[]=$file;
            $tempArray['total_size'] += filesize("$dir/$file");
        }
    }
    }
   closedir($handle);
  return $tempArray;
}
于 2015-05-01T05:30:50.317 に答える