手机
当前位置:查字典教程网 >编程开发 >php教程 >php获取某个目录大小的代码
php获取某个目录大小的代码
摘要:大致程序思想就是使用递规来计算目录占用空间多少,然后再把这个占用空间的值写进文本文件里,那么只要访问这个txt文件就知道占用了多少空间,不用...

大致程序思想就是使用递规来计算目录占用空间多少, 然后再把这个占用空间的值写进文本文件里, 那么只要访问这个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解析xml方法实例详解

PHP滚动日志的代码实现

如何分别全角和半角以避免乱码

图形数字验证代码

我的论坛源代码(五)

php删除指定目录的方法

解决RHAS3中Apache2的PHP上传文件大小的限制

一个目录遍历函数

php编写批量生成不重复的卡号密码代码

一段php加密解密的代码

精品推荐
分类导航