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 

  • 相关阅读:
    MySQL-EXPLAIN执行计划字段解释
    MySQL-EXPLAIN执行计划Extra解释
    HTTP与HTTPS的区别
    【面试】Java中sleep和wait的区别
    Nginx之前后端分离(入门)
    玩程序 之 一 . 字符串处理工具(可通过C#脚本扩展)
    C#实现下载功能,可用于软件自动更新
    对c#剪切板Clipboard占用的问题一点解决方法
    C# 制作 仪表
    C#使用自定义字体(从文件获取)
  • 原文地址:https://www.cnblogs.com/xxcn/p/3583984.html
Copyright © 2011-2022 走看看