澳门新葡萄京官网首页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 “State of Qatar卡塔尔(قطر‎ { 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;?

大要程序观念正是使用递规来测算目录占用空间稍加,
然后再把那几个占领空间的值写进文本文件里,
那么只要访问那么些txt文件就精晓占用了有一点空间, 不用频仍获取而读磁盘,
节省财富. 每一次客户倘诺上传的文件可能去除了文件, 那么又重新打开总括.
当然, 也足以把总结结果保存到数据Curry. 复制代码 代码如下: function countDirSize {
$handle = opendir; while (false!==($FolderOrFile = readdir {
if($FolderOrFile != “.” && $FolderOrFile != “..”) { if(is_dirState of Qatar {
$sizeResult += getDirSize; } else { $sizeResult += filesize; } } }
closedir; return $sizeResult; } 把字节调换为常规的K啊M啊之类的函数:
复制代码 代码如下: function
get_real_size { $kb = 1024; // Kilobyte $mb = 1024 * $kb; // Megabyte
$gb = 1024 * $mb; // Gigabyte $tb = 1024 * $gb; // Terabyte if {
return $size.” B”; }else if { return round.” KB”; }else if { return
round.” MB”; }else if { return round.” GB”; }else { return round.” TB”;
} } 用法十分轻便: 复制代码 代码如下:
$size_zip=countDirSize; $size_zip=get_real_size;
就那样简单了,呵呵。 复制代码 代码如下:
/** * File: fetch user directory use size * Author: heiyeluren *
Create: 2005-9-19 16:20 * Modifed: 2005-9-19 16:41 */ /*** 基本函数
***/ //总计目录大小 function countDirSize { handle = opendir; while
(false!==(FolderOrFile = readdir { if(FolderOrFile != “.” &&
FolderOrFile != “..”) { if(is_dir { sizeResult += getDirSize; } else {
sizeResult += filesize; } } } closedir; return sizeResult; }
//保存顾客文件大小 function saveDirSize { userDirSize = countDirSize; if
(!fp = fopen(userDir.”/dir_size.txt”, “w+”卡塔尔国State of Qatar { die; } else { fwrite; }
} //获取客户目录的高低 function getDirSize { user = addslashes; sizeFile
= userDir.”/dir_size.txt”; if (!fp = fopen { return 0; } else { dirSize
= fread(fp, filesize; } return dirSize; } /***澳门新葡萄京官网首页 , 调用实例 ***/ user
= “heiyeluren”; userPath = “./user/”.user;
//借使顾客奉行了去除或许上传文件的操作就再次获得目录大小 if (action ==
“upload” || action == “delete”State of Qatar { saveDirSize; } userDirSize =
getDirSize/1024; echo “客商: “.user; echo “占用空间: “.userDirSize;
?>

一、删除目录及目录下的兼具文件

function delDirAndFile( $dirName )

{

if ( $handle = opendir( “$dirName” ) ) {

while ( false !== ( $item = readdir( $handle ) ) ) {

if ( $item != “.” && $item != “..” ) {

if ( is_dir( “$dirName/$item” ) ) {

delDirAndFile( “$dirName/$item” );

} else {

if( unlink( “$dirName/$item” 卡塔尔国 State of Qatarecho “成功删除文件: $dirName/$item

n”;

}

}

}

closedir( $handle );

if( rmdir( $dirName 卡塔尔国 卡塔尔国echo “成功删除目录: $dirName

n”;

}

}

二、仅删除目录下的文书,不删除目录

function delFile($dirName){

if(file_exists($dirName) && $handle=opendir($dirName)){

while(false!==($item = readdir($handle))){

if($item!= “.” && $item != “..”){

if(file_exists($dirName.’/’.$item) && is_dir($dirName.’/’.$item)){

delFile($dirName.’/’.$item);

}else{

if(unlink($dirName.’/’.$item)){

return true;

}

}

}

}

closedir( $handle);

}

}

三、定期删除

<?php

$flag = 1; //将实行标识设置为1,默以为推行

ignore_user_abort(卡塔尔; //顾客端断开时,能够让剧本继续在后台实施

set_time_limit(0卡塔尔; //忽视php.ini设置的台本运转时刻限定

$interval = 5*60; //设置实施周期,单位为秒,5秒钟为 5*60=300

do{

$flagfile = “flag.txt”;
//标记放置在文件“flag.txt”中。“0”表示甘休执行,“1”表示继续推行

if(file_exists($flagfile) && is_readable($flagfileState of Qatar卡塔尔 { //读取文件内容

$fh = fopen($flagfile,”r”);

while (!feof($fh)) {

$flag = fgets($fhState of Qatar; //存款和储蓄标记

}

fclose($fh);

}

$dir = “temp/”; //你的有时目录位置

$handle=opendir(“{$dir}/”);

while (false !== ($file=readdir($handle))) {

if ($file!=”.” && $file!=”..” && !is_dir(“{$dir}/{$file}”)) {

@unlink (“{$dir}/{$file}”);

}

}

closedir($handle卡塔尔(قطر‎; //关闭由 opendir(卡塔尔 函数张开的目录

sleep($intervalState of Qatar;
//实行一个周期后,休眠$interval时间,休眠甘休后脚本继续推行

}while($flag);

友情提醒:请在地点情形测量检验!

四、创造文件夹

mkdir(“文件夹路线”,0700卡塔尔国;

五、列出目录和文书

if ($handle = opendir(‘./’卡塔尔卡塔尔(قطر‎ {//钦赐当前目录

  while (false !== ($file = readdir($handle卡塔尔(قطر‎卡塔尔国卡塔尔 {//循环读取目录下的文书

      echo “$file<br />”;

  }

  closedir($handleState of Qatar;//关闭目录流

}

六、磁盘空间

function dir_size($dir) {

@$dh = opendir($dir卡塔尔国;//展开目录,再次来到一个目录流

$size = 0;//伊始大小为0

while ($file = @readdir($dh卡塔尔国卡塔尔国 {//循环读取目录下的文本

if ($file != “.” and $file != “..”卡塔尔国{//假如再次来到的不是本目录(.)可能上级目录(..卡塔尔(قطر‎

$path = $dir.”/”.$file;//设置目录,用于含有子目录的地方

if (is_dir($pathState of QatarState of Qatar {//借使是目录文件

echo “$path<br />”;

$size += dir_size($path卡塔尔国;//递归调用,总括目录大小

} elseif (is_file($path卡塔尔国State of Qatar {//借使是文件

echo “$path “. filesize($path) .” BYTE<br />”;

$size += filesize($path卡塔尔;//总计文件大小

}

}

}

@closedir($dh卡塔尔(قطر‎;//关闭目录流

return $size;//重返大小

}

$dir = “.”;//钦定文件所在的目录

$dir_size = dir_size(“$dir”State of Qatar;//计算目录大小

echo “总大小:”. $dir_size .” BYTE”;

七、退换目录和文书的习性

chmod(“test.txt”,0755);

发表评论

电子邮件地址不会被公开。 必填项已用*标注