PHP x86:在没有外部程序的情况下确定超过 2 GB 的文件大小
在 PHP 中,检索大于 2 的文件的文件大小32 位平台上的 GB 提出了挑战。像 filesize()、stat() 和 fseek() 这样的标准 PHP 函数都达不到要求。
为了解决这个问题,出现了一个名为 大文件工具 的综合开源项目。它包含在 PHP 中管理超过 2 GB 的文件的巧妙技术,甚至在 32 位系统上也是如此。
大文件工具采用的一种方法尝试利用特定于平台的 shell 命令。对于 Windows,它使用 shell 替换修饰符。对于 *nix 和 macOS,它使用 stat 命令。如果这些失败,它将转向 COM(特别适用于 Windows)。作为最后的手段,它会恢复为 filesize()。
以下代码片段展示了如何使用此方法确定大文件的文件大小:
<code class="php">function filesize64($file) { $size = null; // Try shell command if (function_exists('exec') && !ini_get('safe_mode')) { $cmd = (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') ? "for %F in (\"$file\") do @echo %~zF" : "stat -c%s \"$file\""; @exec($cmd, $output); if (is_array($output) && ctype_digit($size = trim(implode("\n", $output)))) { return $size; } } // Try Windows COM interface if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN' && class_exists("COM")) { try { $fsobj = new COM('Scripting.FileSystemObject'); $f = $fsobj->GetFile(realpath($file)); $size = $f->Size; } catch (Exception $e) {} if (ctype_digit($size)) { return $size; } } // Fall back to filesize() return filesize($file); }</code>
以上是如何在 x86 系统上的 PHP 中确定超过 2 GB 的文件大小?的详细内容。更多信息请关注PHP中文网其他相关文章!