php でファイルサイズを取得するのが正確でない場合はどう対処しますか。
ファイルサイズの取得が正確に行えない場合のPHPで対処する方法がいくつかあります。
- ファイルサイズの取得には filesize() 関数を利用するのが一般的方法ですが、2GBを超えるファイルを扱う場合などは正確な値を取得できない場合があります。このような場合は別の方法でファイルサイズを取得する必要があります。
- 例えばLinuxではdu -bコマンド、WindowsではdirコマンドなどをOSのCLIツールを用いてファイルサイズを取得し、exec()で実行して出力を取得する方法。
- ftell() 関数と fseek() 関数でファイルサイズを取得しよう。これはファイルポインタをファイルの末尾に移動させてから ftell() 関数でファイルサイズを取得することで、小さなファイルに適している。
exec() 関数と OS のコマンドラインツールを使用してファイルサイズを取得するためのサンプルコードを表します。
function getFileSize($filePath) {
$output = '';
$command = 'du -b ' . escapeshellarg($filePath);
exec($command, $output);
$fileSize = (int) trim($output[0]);
return $fileSize;
}
$fileSize = getFileSize('/path/to/file');
echo $fileSize;
なお、前記のコードはLinuxシステム向けのものです。Windowsシステムでご利用の場合はコマンドと引数を修正してご利用ください。