php 目录迭代器 RecursiveDirectoryIterator 如何提高效率
程序员文章站
2024-02-01 08:42:46
...
迭代器方式
echo '程序开始时间:'.time().'
';
$path = 'd:/www';
getRevDir($path);
echo '程序结束时间:'.time().'
';
exit;
echo '
echo '程序开始时间:'.time().'
';
$path = 'd:/www';
getRevDir($path);
echo '程序结束时间:'.time().'
';
exit;
echo '
';
//获取当前路径下所有的目录和文件名
//这种用法主要是用在获取远程服务器目录的B/S程序中
var_dump(array_keys(iterator_to_array(new RecursiveDirectoryIterator($path))));
exit;
//迭代获取当前路径下所有的目录和文件
function getRevDir($path, $level = 0){
$dirIterator = new RecursiveDirectoryIterator($path);
$strSplitBar = '';
for($i=0;$i if($i == $level-1){
$strSplitBar .= '|__';
}else{
$strSplitBar .= ' ';
}
}
foreach ($dirIterator as $key => $fileInfo){
if($dirIterator->hasChildren()){
$dirName = substr($key,strrpos($key, DIRECTORY_SEPARATOR)+1);
echo $strSplitBar.$dirName.'
';
getRevDir($key, $level+1);
}else{
echo $strSplitBar.basename($key).'
';
}
}
}
执行结果
程序开始时间:1402624676
程序结束时间:1402624682
opendir 方式
echo '程序开始时间:'.time().'
';
$path = 'd:/www';
getRevDir($path);
echo '程序结束时间:'.time().'
';
exit;
echo '';
//获取当前路径下所有的目录和文件名
//这种用法主要是用在获取远程服务器目录的B/S程序中
var_dump(array_keys(iterator_to_array(new RecursiveDirectoryIterator($path))));
exit;
//迭代获取当前路径下所有的目录和文件
function getRevDir($path, $level = 0){
$dirIterator = new RecursiveDirectoryIterator($path);
$strSplitBar = '';
for($i=0;$i if($i == $level-1){
$strSplitBar .= '|__';
}else{
$strSplitBar .= ' ';
}
}
foreach ($dirIterator as $key => $fileInfo){
if($dirIterator->hasChildren()){
$dirName = substr($key,strrpos($key, DIRECTORY_SEPARATOR)+1);
echo $strSplitBar.$dirName.'
';
getRevDir($key, $level+1);
}else{
echo $strSplitBar.basename($key).'
';
}
}
}
执行结果
程序开始时间:1402624679
程序结束时间:1402624682
时间相差好大.
回复讨论(解决方案)
遍历整个网站目录才 3 秒钟,够快的了
遍历的效率也就这样了吧。
要不用Linux命令获取目录树再处理看看。
上一篇: 十分钟搞懂线索二叉树
推荐阅读
-
php 目录迭代器 RecursiveDirectoryIterator 如何提高效率
-
PHP 如何将 linux 服务器的 root 权限目录改为 www:www
-
php 目录迭代器 RecursiveDirectoryIterator 怎么提高效率
-
php 目录迭代器 RecursiveDirectoryIterator 如何提高效率
-
求助:php和mysql跨服务器如何提高效率?
-
php 目录迭代器 RecursiveDirectoryIterator 怎么提高效率
-
post - 如何用curl命令上传文件到制定的目录?后台用php程序来接收,apache httpd做服务器
-
如何使用php迭代器实现一个斐波纳契数列函数的实例分析
-
post - 如何用curl命令上传文件到制定的目录?后台用php程序来接收,apache httpd做服务器
-
PHP的迭代器接口Iterator如何使用