如何迭代获取ftp文件夹大小

时间:2013-05-28 10:04:39

标签: php recursion ftp directory size

我编写了一个代码来获取所选文件夹的大小以及所有子文件夹,但我面临的问题是,无法在循环中增加大小计数器,

function getsize($username,$password,$server,$dir){
    $connid = ftp_connect($server);

    //ini_set('xdebug.max_nesting_level',500);
    $connid = ftp_connect($server);
    $login_result = ftp_login($connid, $username, $password);
    $total_size = 0;
    $contents_on_server = ftp_nlist($connid, $dir);
    foreach($contents_on_server as $user_file) {
        if(ftp_size($connid,$user_file) == -1){
            $directory = $user_file;
            $obj = new FTP();
            $obj->getsize($username,$password,$server,$directory);  
        }
        else{
            //$file_size = ftp_size($connid,$user_file);
            $total_size += ftp_size($connid,$user_file);
        }
    }
    echo $total_size;

}"

如果我打印$total_size,则输出为192944122391740,附加的所有三个文件的大小但不加总。

任何帮助??

1 个答案:

答案 0 :(得分:0)

您正在迭代相同的函数getsize,它将$ total_size重置为零导致问题。在类中创建setize对象,在每次迭代时设置值,在最终调用时重置对象。