php获取某个目录大小的代码
2015-01-24信息快讯网
大致就是不知道目录下面又多少层目录, 也不知道又多少文件, 需要统计占用空间大小, 这个可以用在 相册/数据库占用/网络U盘 等程序中.
大致程序思想就是使用递规来计算目录占用空间多少, 然后再把这个占用空间的值写进文本文件里, 那么只要访问这个txt文件就知道占用了多少空间, 不用频繁获取而读磁盘, 节省资源. 每次用户如果上传的文件或者删除了文件, 那么又重新进行统计. 当然, 也可以把统计结果保存到数据库里.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; }
把字节转换为正常的K啊M啊之类的函数:
function get_real_size($size) { $kb = 1024; // Kilobyte $mb = 1024 * $kb; // Megabyte $gb = 1024 * $mb; // Gigabyte $tb = 1024 * $gb; // Terabyte if($size < $kb) { return $size." B"; }else if($size < $mb) { return round($size/$kb,2)." KB"; }else if($size < $gb) { return round($size/$mb,2)." MB"; }else if($size < $tb) { return round($size/$gb,2)." GB"; }else { return round($size/$tb,2)." TB"; } }
用法很简单:
$size_zip=countDirSize("../zip/"); $size_zip=get_real_size($size_zip);
就这么简单了,呵呵。
<? /** * 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; ?>
PHP遍历目录并返回统计目录大小
用PHP来计算某个目录大小的方法
php网站来路获取代码(针对搜索引擎)
php获取当前网址url并替换参数或网址的方法
php 智能404跳转代码,适合换域名没改变目录的网站
PHP stristr() 函数(不区分大小写的字符串查找)
PHP 循环列出目录内容的函数代码
PHP 删除一个目录及目录下的所有文件的函数代码
PHP为表单获取的URL 地址预设 http 字符串函数代码
php带密码功能并下载远程文件保存本地指定目录 修改加强版
php 获取一个月第一天与最后一天的代码
PHP URL地址获取函数代码(端口等) 推荐
PHP chmod 函数与批量修改文件目录权限
获取远程文件大小的php函数
PHP 裁剪图片成固定大小代码方法
PHP 上传文件大小限制
php目录管理函数小结
php递归列出所有文件和目录的代码
在服务端进行目录建立、删除,文件上传、删除的过程的php代码
PHP获取网站域名和地址的代码
PHP 得到根目录的 __FILE__ 常量
兼容PHP5的PHP目录管理函数库
php 在线打包_支持子目录
PHP中Date获取时间不正确怎么办
php REMOTE_ADDR之获取访客IP的代码
PHP循环获取GET和POST值的代码
PHP获取网卡地址的代码
算你_l的 PHP 程式大小
vBulletin HACK----显示话题大小和打开新窗口于论坛索引页