• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

php获取某个目录大小的代码_php技巧

php 搞代码 4年前 (2022-01-26) 32次浏览 已收录 0个评论

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

 <BR>function countDirSize($dir) <BR>{ <BR>$handle = opendir($dir); <BR>while (false!==($FolderOrFile = readdir($handle))) <BR>{ <BR>if($FolderOrFile != "." && $FolderOrFile != "..") <BR>{ <BR>if(is_dir("$dir/$FolderOrFile")) { <BR>$sizeResult += getDirSize("$dir/$FolderOrFile"); <BR>} else { <BR>$sizeResult += filesize(<div style="color:transparent">!本文来源gaodai.ma#com搞#代!码(网</div><em>搞gaodaima代码</em>"$dir/$FolderOrFile"); <BR>} <BR>} <BR>} <BR>closedir($handle); <BR>return $sizeResult; <BR>} <BR>


把字节转换为正常的K啊M啊之类的函数:

 <BR>function get_real_size($size) { <br><br>$kb = 1024; // Kilobyte <BR>$mb = 1024 * $kb; // Megabyte <BR>$gb = 1024 * $mb; // Gigabyte <BR>$tb = 1024 * $gb; // Terabyte <br><br>if($size < $kb) { <BR>return $size." B"; <BR>}else if($size < $mb) { <BR>return round($size/$kb,2)." KB"; <BR>}else if($size < $gb) { <BR>return round($size/$mb,2)." MB"; <BR>}else if($size < $tb) { <BR>return round($size/$gb,2)." GB"; <BR>}else { <BR>return round($size/$tb,2)." TB"; <BR>} <BR>} <BR>


用法很简单:

 <BR>$size_zip=countDirSize("../zip/"); <BR>$size_zip=get_real_size($size_zip); <BR>


就这么简单了,呵呵。

<? <BR>/** <BR>* File: fetch user directory use size <BR>* Author: heiyeluren  <BR>* Create: 2005-9-19 16:20 <BR>* Modifed: 2005-9-19 16:41 <BR>*/ <br><br>/*** 基本函数 ***/ <br><br>//计算目录大小 <BR>function countDirSize(dir) <BR>{ <BR>handle = opendir(dir); <BR>while (false!==(FolderOrFile = readdir(handle))) <BR>{ <BR>if(FolderOrFile != "." && FolderOrFile != "..") <BR>{ <BR>if(is_dir("dir/FolderOrFile")) { <BR>sizeResult += getDirSize("dir/FolderOrFile"); <BR>} else { <BR>sizeResult += filesize("dir/FolderOrFile"); <BR>} <BR>} <BR>} <BR>closedir(handle); <BR>return sizeResult; <BR>} <br><br>//保存用户文件大小 <BR>function saveDirSize(userDir) <BR>{ <BR>userDirSize = countDirSize(userDir); <BR>if (!fp = fopen(userDir."/dir_size.txt", "w+")) { <BR>die("Open file failed"); <BR>} else { <BR>fwrite(fp, dirSize); <BR>} <BR>} <br><br>//获取用户目录的大小 <BR>function getDirSize(userDir) <BR>{ <BR>user = addslashes(userDir); <BR>sizeFile = userDir."/dir_size.txt"; <BR>if (!fp = fopen(sizeFile, "r") { <BR>return 0; <BR>} else { <BR>dirSize = fread(fp, filesize(sizeFile)); <BR>} <BR>return dirSize; <BR>} <BR>/*** 调用实例 ***/ <BR>user = "heiyeluren"; <BR>userPath = "./user/".user; <br><br>//如果用户执行了删除或者上传文件的操作就重新获取目录大小 <BR>if (action == "upload" || action == "delete") { <BR>saveDirSize(userPath); <BR>} <br><br>userDirSize = getDirSize(userPath)/1024; <BR>echo "用户: ".user; <BR>echo "占用空间: ".userDirSize; <BR>?> <BR>

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php获取某个目录大小的代码_php技巧
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址