![]() |
|
首页 │ Apache │ Linux│ Java│ MySQL│ 注册│帮助 | |||
以下代码100000文件*10000文件夹,就慢得要命......
那位大侠帮助看一下怎么优化.......
有没有更好的方法.......
<?php
$Interval = null;
Interval();
set_time_limit(3600);
$Ftp_Path = "";
$Ftp_Addr = "";
$dir_Array = array();
$file_Array= array();
$dir_Array["F:/软件源码/"]=false;
reset($dir_Array);
$FSO = opendir(key($dir_Array));
$i=0;
while(true){
reset($dir_Array);///设置到第一条目录中
$noncePath = key($dir_Array);///当前操作目录
//echo count($dir_Array)."
";
if(!$dir_Array[$noncePath]){
//echo "$noncePath
";
//echo count($dir_Array)."
";
$FSO = opendir($noncePath);//打开目录
while($flist=readdir($FSO)){
if(is_dir("$noncePath$flist")){
//echo $noncePath."
";
if($flist!="." && $flist!=".." && strlen($noncePath.$flist."/")>strlen($noncePath)){
$dir_Array[$noncePath.$flist."/"] = false ;//标志目录未已经操作
//echo "$noncePath$flist
";
}
}else{
$i++;
$file_Array[$noncePath][] = $noncePath.$flist;///记录文件
}
}
closedir($FSO);
$dir_Array[$noncePath] = true;//已经读取过的目录
}
unset($dir_Array[$noncePath]);//删除已经操作过的目录
if(count($dir_Array)==0){//停止目录遍历
break;
}
}
echo $i."
";
echo Interval();
function Interval(){
global $Interval;
$vTemp = microtime(); //返回目前时间的百万分之一秒戳记值
$vTemp = explode(" ",$vTemp);
$vTemp = doubleval($vTemp[1])+doubleval($vTemp[0]);
if($Interval==null){//判断是否开始时间存在
$Interval = $vTemp;
}else{
$vTemp = abs($vTemp-$Interval);//取得执行时间
return $vTemp;
}
}
?>
[ 本帖最后由 失忆今生 于 2007-7-13 09:59 AM 编辑 ]

