使用php递归计算目录大小
PHP 目录 大小 使用
2023-09-11 14:18:04 时间
统计一个目录大小,因为不知道目录中子目录的深度,所以for循环很难实现,但是用递归调用很容易实现,只要统计出一个目录中所有文件的大小,那么每一次调用就可以了,随便建了个目录,建立一些文件,方法代码如下:
1 function dirsize($dirname){ 2 static $sum=0; //静态变量,防止每次递归置零 3 $handle=opendir($dirname); 4 while(($item=readdir($handle))!==false){ 5 if($item!='.'&&$item!='..'){ 6 if(is_file($dirname.'/'.$item)){ 7 $sum+=filesize($dirname.'/'.$item); 8 } 9 if(is_dir($dirname.'/'.$item)){ 10 //递归操作 11 $func=__FUNCTION__; 12 $func($dirname.'/'.$item); 13 //dirsize($dirname.'/'.$item); 14 } 15 } 16 } 17 closedir($handle); 18 return $sum; 19 } 20 $filename='ssh'; 21 $arr=dirsize($filename); 22 echo ($arr/1024).'KB';
这样就可以统计目录大小了,定义保存目录大小变量的时候要定义静态的变量或者全局变量,整个程序运行过程中一直存在,防止每次递归置零
注意目录'.'和'..'的处理,如果使用Linux那就再熟悉不过了
重点部分就几句代码,判断是文件还是目录,是文件进行累加计算,否则递归调用。
相关文章
- php 无限级分类查找父节点所有子节点【找出 某节点的子节点】
- php中代码执行&&命令执行函数
- PHP设计模式:简单工厂
- 【转】PHP网站(nginx、php-fpm、mysql) 用户权限解析
- 禁用PHP函数,可以对php.ini进行配置
- Windows下图文详解PHP三种运行方式(php_mod、cgi、fastcgi)
- PHP Socket编程 之 php实现http服务
- PHP 8 新特性之 Attributes (注解)
- dns未设置 PHP Warning: file_get_contents():php_network_getaddresses: getaddrinfo failed:
- php分享(三十五) 文件多写注意事项
- [获取行数]php读取大文件提供性能的方法,PHP的stream_get_line函数读取大文件获取文件的行数的方...
- PHP中获取当前页面的完整URL & php $_SERVER中的SERVER_NAME 和HTTP_HOST的区别
- PHP采集库-Snoopy.class.php
- PHP做Web开发的MVC框架(Smarty使用说明 )
- thinkphp6: 在extend目录下开发扩展类(php 8.1.1 / thinkphp v6.0.10LTS )
- php类库PHP QR Code 二维码
- Relearning PHP (2) – php 的浮点数float
- 小技巧找出一个php的cron脚本出问题的代码行
- [php-src] 窥探Php内核中的数组与面向对象
- Atitit 图片验证码功能设计文档总结目录1.1. 使用图片验证码img src标签设置图片。。验证码图片有png,jpg,svg等格式。。 11.2. Php png图像 11.3. P
- Atitit web httphandler的实现 java python node.js c# net php 目录 1.1. Java 过滤器 servelet1 1.2. Python的
- Atitit 前端测试最简化内嵌web服务器 php 与node.js 目录 1.1. php内置Web Server1 1.2. Node的2 Node的比较麻烦些。。Php更加简单
- Atitit.php opcode虚拟机指令集 分类以及详细解释
- atitit. web 在线文件管理器最佳实践(1)--- elFinder 的使用流程解决之道 。打开浏览服务器文件夹java .net php
- PHP MySQL Order By 关键词
- CentOS下yum安装PHP,配置php-fpm服务
- linux 配置 Apache mysql php最新版