zoukankan      html  css  js  c++  java
  • PHP代码统计文件大小(自动确定单位)

    php中有一个系统自带的计算文件大小的函数,就是filesize(),但是这个函数是以字节为单位的,但是在一些情况下,我们需要很直观的了解一个文件大小,就不仅仅需要字节B这个单位了,还需要KB,MB,GB,甚至更大TB,PB,如果碰到一个很大的文件有49957289167B,大家一看这么一长串的数字后面单位是字节B,还是不知道这个文件的大小是一个什么概念,但是我们把它转换成GB为单位,就是46.53GB。

    所以,需要我们自己动手写一个函数来根据文件大小,自动选择统计单位,是的文件大小很直观。

    该函数最主要的是根据文件的字节数,判断应当选择的统计单位,也就是说一个文件用某一单位比如MB,那么该文件肯定小于1GB,否则当然要用GB作为单位了,而且文件要大于KB,不然的话得用更小的单位统计。该函数代码如下

    //size()  统计文件大小
    function size($byte)
    {
        if($byte < 1024) {
          $unit="B";
        }
        else if($byte < 10240) {
          $byte=round_dp($byte/1024, 2);
          $unit="KB";
        }
        else if($byte < 102400) {
          $byte=round_dp($byte/1024, 2);
          $unit="KB";
        }
        else if($byte < 1048576) {
          $byte=round_dp($byte/1024, 2);
          $unit="KB";
        }
        else if ($byte < 10485760) {
          $byte=round_dp($byte/1048576, 2);
          $unit="MB";
        }
        else if ($byte < 104857600) {
          $byte=round_dp($byte/1048576,2);
          $unit="MB";
        }
        else if ($byte < 1073741824) {
          $byte=round_dp($byte/1048576, 2);
          $unit="MB";
        }
        else {
          $byte=round_dp($byte/1073741824, 2);
          $unit="GB";
        }
    
    $byte .= $unit;
    return $byte;
    }
    
    function round_dp($num , $dp)
    {
      $sh = pow(10 , $dp);
      return (round($num*$sh)/$sh);
    }
    

      还有一个辅助函数 round_up(),该函数用来取舍小数点位数的,四舍五入。

    这样我们就能很好额统计任何一个文件的大小了,首先通过系统自带的filesize()函数获得文件的字节数,再用上面的函数换算成适当的单位就可以了,例如:
    一个迈克尔杰克逊的演唱会文件,喜欢的可以到这里下载: http://ed2ku.com/file/283525/ (比较大,40多GB),首先获得他的字节数是49957289167B,然后用size()函数,获得该文件大小为46.53GB,当然可以根据需要设定取舍小数点位数。

    参考:http://www.jishutie.net/dev/php/16939.html 

  • 相关阅读:
    负载均衡服务之HAProxy基础入门
    WEB缓存系统之varnish代理以及健康状态检测配置
    WEB缓存系统之varnish缓存项修剪
    WEB缓存系统之varnish状态引擎
    WEB缓存系统之varnish基础入门
    WEB缓存控制机制与varnish简介
    WEB应用之httpd基础入门(五)
    Appium移动端测试--基础预热
    postman接口测试-参数化-测试数据Text文本
    机器学习环境搭建安装TensorFlow1.13.1+Anaconda3.5.3+Python3.7.1+Win10
  • 原文地址:https://www.cnblogs.com/xxcn/p/3583984.html
Copyright © 2011-2022 走看看