我已经启动了名为Big File Tools的项目。它被证明可以在Linux,Mac和Windows上工作(甚至是32位变体)。即使对于大型文件(>4GB),它也提供字节精确的结果。在内部,它使用砖/数学 - 任意精度的算术库。
使用作曲家安装它。
composer install jkuchar/BigFileTools
并使用它:
<?php
$file = BigFileTools\BigFileTools::createDefault()->getFile(__FILE__);
echo $file->getSize() . " bytes\n";
结果是 BigInteger,因此您可以使用结果进行计算
$sizeInBytes = $file->getSize();
$sizeInMegabytes = $sizeInBytes->toBigDecimal()->dividedBy(1024*1024, 2, \Brick\Math\RoundingMode::HALF_DOWN);
echo "Size is $sizeInMegabytes megabytes\n";
大文件工具内部使用驱动程序来可靠地确定所有平台上的确切文件大小。以下是可用驱动程序的列表(更新于 2016-02-05)
| Driver | Time (s) ↓ | Runtime requirements | Platform
| --------------- | ------------------- | -------------- | ---------
| CurlDriver | 0.00045299530029297 | CURL extension | -
| NativeSeekDriver | 0.00052094459533691 | - | -
| ComDriver | 0.0031449794769287 | COM+.NET extension | Windows only
| ExecDriver | 0.042937040328979 | exec() enabled | Windows, Linux, OS X
| NativeRead | 2.7670161724091 | - | -
您可以将 BigFileTools 与其中任何一个一起使用,或者默认情况下选择最快的可用 (BigFileTools::createDefault()
)
use BigFileTools\BigFileTools;
use BigFileTools\Driver;
$bigFileTools = new BigFileTools(new Driver\CurlDriver());