获取目录大小ssh2php

获取目录大小ssh2php,php,size,ssh2-exec,Php,Size,Ssh2 Exec,我需要找出如何获得文件夹大小的目录 工作的代码取自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

我需要找出如何获得文件夹大小的目录

工作的代码取自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" 
} 

您可以将文件大小累加器添加到返回数组中:

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;
}

你所说的文件夹大小是什么意思?文件夹中的文件数?@Barmar我指的是以兆字节为单位的文件夹大小,或使用kbstat$dir/$file获取有关文件的信息,其中包括文件大小。将其添加到$total_size变量中。顺便说一句,is_dir$文件应该是is_dir$dir/$文件。@Barmar感谢您的建议。我很难找到正确使用的例子。你能给我举个例子吗?要得到总大小,在递归之后,你需要将它的总大小添加到这个级别的总大小中。$tempArray['total_size']+=$tempArray[$file]['total_size'];哦,接得好!Thanks@JohnRama在$outgoing['total_size']@JohnRama-IMO-marking-answers主要是一种机制,用于帮助有类似问题的人,他们将来可能会偶然发现这一点。如果此答案有帮助,但需要更改,请提出建议或编辑。