douxuzui4590 2015-05-01 05:20
浏览 87
已采纳

获取目录大小ssh2 php

I need to work out how i can get a directory size of a folder.

Code that does work is taken from 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);

So I get a result from print_r but now how do i get the folder size of janedoe?

The output of $outgoing is:

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

1条回答 默认 最新

  • duanke0555 2015-05-01 05:30
    关注

    You could add a filesize accumulator to your return array:

    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;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 echarts动画效果失效的问题。官网下载的例子。
  • ¥60 许可证msc licensing软件报错显示已有相同版本软件,但是下一步显示无法读取日志目录。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
  • ¥15 前置放大电路与功率放大电路相连放大倍数出现问题
  • ¥30 关于<main>标签页面跳转的问题
  • ¥80 部署运行web自动化项目
  • ¥15 腾讯云如何建立同一个项目中物模型之间的联系
  • ¥30 VMware 云桌面水印如何添加