if( is_dir($url) )
    {
        if( $dp = opendir( $url) )
        {
            while (false !== ($file = readdir($dp))) {
               if( $file != "." || $file != ".." )
               {
                   $fileSize += filesize($userFileDir."/".$file);
               }
            }
        }
        closedir($dp);
    }

解决方案 »

  1.   

    谢谢大家的回复,,对于piner的回实现方法我也试过,但是对于磁盘的读写实在是太厉害了,,好像不是很好,对于helloyou0说的调用系统命令请问具体代码如何实现
      

  2.   


    系统调用也没有直接实现的方法, 你用c写成php函数, 给php调用才可以, 不过这样也是很麻烦.
    反正你要统计目录, 而且你又无法确定对方目录的子目录又多少, 那么使用递规是不错的方法.
    另外, 为了防止频繁读取磁盘, 可以考虑把用户文件大小保存到数据库或者文本文件里.为了描述这个问题, 我下面写了一段代码来描述, 下面是使用文本文件来保存用户的目录大小.<?
    /**
     * File: fetch user directory use size
     * Author: heiyeluren <heiyeluren_AT_gmail_com>
     * Create: 2005-9-19 16:20
     * Modifed: 2005-9-19 16:41
     *//*** 基本函数 ***///计算目录大小
    function countDirSize($dir)
    {
    $handle = opendir($dir);
    while (false!==($FolderOrFile = readdir($handle)))
    {
    if($FolderOrFile != "." && $FolderOrFile != "..") 
    {  
    if(is_dir("$dir/$FolderOrFile")) { 
    $sizeResult += getDirSize("$dir/$FolderOrFile"); 
    } else { 
    $sizeResult += filesize("$dir/$FolderOrFile"); 
    }
    }  
    }
    closedir($handle);
    return $sizeResult;
    } //保存用户目录占用空间大小到文件
    function saveDirSize($userDir)
    {
     $userDirSize = countDirSize($userDir);
     if (!$fp = fopen($userDir."/dir_size.txt", "w+")) {
      die("Open file failed");
     } else {
     fwrite($fp, $dirSize);
     }  
    }//获取用户目录占用空间的大小
    function getDirSize($userDir)
    {
    $user = addslashes($userDir);
    $sizeFile = $userDir."/dir_size.txt";
    if (!$fp = fopen($sizeFile, "r") {
    return 0;
    } else {
    $dirSize = fread($fp, filesize($sizeFile));
    }
    return $dirSize;
    }
    /*** 调用实例 ***/$user = "heiyeluren";
    $userPath = "./user/".$user;//如果用户执行了删除或者上传文件的操作就重新获取目录大小
    if ($action == "upload" || $action == "delete") {
    saveDirSize($userPath);
    }$userDirSize = getDirSize($userPath)/1024;
    echo "用户: ".$user;
    echo "占用空间: ".$userDirSize;?>