zoukankan      html  css  js  c++  java
  • php获取某个目录大小

    大致就是不知道目录下面又多少层目录, 也不知道又多少文件, 需要统计占用空间大小, 这个可以用在 相册/数据库占用/网络U盘 等程序中.

      大致程序思想就是使用递规来计算目录占用空间多少, 然后再把这个占用空间的值写进文本文件里, 那么只要访问这个txt文件就知道占用了多少空间, 不用频繁获取而读磁盘, 节省资源. 每次用户如果上传的文件或者删除了文件, 那么又重新进行统计. 当然, 也可以把统计结果保存到数据库里.

    <?
    /**
    * 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;

    ?>

  • 相关阅读:
    TCP的三次握手与四次挥手理解及面试题(很全面)
    python解释器锁的理解
    Flask的基本使用、四剑客和配置文件
    Django cache缓存
    xadmin后台管理
    cookies与session
    Java stream流
    Java IO流
    springboot配置文件加载顺序与一些常用配置
    OAuth2.0开放授权
  • 原文地址:https://www.cnblogs.com/kuyuecs/p/1331110.html
Copyright © 2011-2022 走看看