php获取某个目录大小
来源:互联网 发布:男士美白洗面奶知乎 编辑:程序博客网 时间:2024/05/06 12:54
大致就是不知道目录下面又多少层目录, 也不知道又多少文件, 需要统计占用空间大小, 这个可以用在 相册/数据库占用/网络U盘 等程序中. http://www.86oo.com
大致程序思想就是使用递规来计算目录占用空间多少, 然后再把这个占用空间的值写进文本文件里,那么只要访问这个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
* http://www.86oo.com
/*** 基本函数 ***/
//计算目录大小
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获取某个目录大小
- php获取某个目录大小
- php获取某个目录大小
- PHP代码计算某个目录大小
- 用PHP来计算某个目录的大小
- PHP获取文件大小和目录大小
- php 获取指定目录下面的某个随机文件名
- c# 获取目录大小
- PHP 统计目录大小
- 利用zabbix监控某个目录大小
- C# 获取某个目录的父目录
- 获取指定目录的大小
- Windows下获取目录大小
- 获取目录下内容大小
- HDFS获取目录大小API
- 关于使用BCB6编写Windows服务的问题
- win32 更改程序图标
- 放置asp被杀毒软件误删
- C#操作XML
- 股票开户
- php获取某个目录大小
- [收集]android Resource ID,Display用法
- ASP.NET技术的学习顺序问题
- 中文分词技术总结
- 添加序号
- 20K_第一个小游戏_桌面球
- Pure-ftpd + Mysql + Pureftpd_php_manager架设FTP 傻子的执著
- 抓取Web网页数据分析(c#)
- (datagridview)如果单击列表头,全选.(第一列为复选框)