PHP disk_total_space 函数
最后修改于 2025 年 4 月 3 日
PHP 的 disk_total_space
函数返回文件系统或磁盘分区的总大小。 它对于存储监控和管理非常有用。
基本定义
disk_total_space
函数以字节为单位返回指定目录所在文件系统的总空间。它接受一个参数。
语法:disk_total_space(string $directory): float|false
。 返回总字节数(float 类型)或在失败时返回 false。 需要文件系统权限。
基本的 disk_total_space 示例
这展示了 disk_total_space
的最简单用法,以获取磁盘大小。
basic_disk_space.php
<?php declare(strict_types=1); $directory = "/"; $totalSpace = disk_total_space($directory); echo "Total space: " . $totalSpace . " bytes";
这以字节为单位返回根文件系统的总空间。 该函数需要对指定目录路径的读取权限。
将字节转换为人类可读的格式
将磁盘空间转换为更大的单位后,通常更具可读性。
human_readable.php
<?php declare(strict_types=1); function formatBytes(float $bytes, int $precision = 2): string { $units = ['B', 'KB', 'MB', 'GB', 'TB']; $bytes = max($bytes, 0); $pow = floor(($bytes ? log($bytes) : 0) / log(1024)); $pow = min($pow, count($units) - 1); $bytes /= (1 << (10 * $pow)); return round($bytes, $precision) . ' ' . $units[$pow]; } $space = disk_total_space("/"); echo "Total space: " . formatBytes($space);
这将原始字节转换为人类可读的格式,如 GB 或 TB。 辅助函数使用可配置的精度处理转换。
检查多个磁盘
您可以使用一个脚本检查多个已挂载文件系统的空间。
multiple_disks.php
<?php declare(strict_types=1); $disks = [ "/" => "Root", "/home" => "Home", "/mnt/data" => "Data Storage" ]; foreach ($disks as $path => $name) { $space = disk_total_space($path); if ($space !== false) { echo "$name: $space bytes\n"; } else { echo "Failed to read $name disk\n"; } }
这会检查多个已挂载的文件系统并处理潜在的故障。 每个磁盘都标有标签,以便在输出中清晰显示。
计算可用空间百分比
与 disk_free_space
结合使用以计算使用率百分比。
free_space_percent.php
<?php declare(strict_types=1); $directory = "/"; $total = disk_total_space($directory); $free = disk_free_space($directory); if ($total !== false && $free !== false) { $used = $total - $free; $percentUsed = ($used / $total) * 100; echo "Disk usage: " . round($percentUsed, 2) . "%"; } else { echo "Unable to determine disk usage"; }
这会计算已用磁盘空间的百分比。 两个函数都必须成功才能使计算生效。 包括错误处理。
Windows 驱动器示例
当格式正确时,该函数适用于 Windows 驱动器号。
windows_drive.php
<?php declare(strict_types=1); $drive = "C:\\"; $space = disk_total_space($drive); if ($space !== false) { echo "Drive C: total space: " . $space . " bytes"; } else { echo "Unable to read drive C:"; }
在 Windows 上,使用反斜杠并包含尾部斜杠。 该函数以字节为单位返回指定驱动器的总容量。
边缘情况
disk_total_space
对某些输入具有特定的行为。
edge_cases.php
<?php declare(strict_types=1); // Non-existent path $result1 = disk_total_space("/nonexistent/path"); // No permissions $result2 = disk_total_space("/root"); var_dump($result1); // bool(false) var_dump($result2); // bool(false) if no permissions
对于无效路径或权限不足时,该函数返回 false。 在计算中使用结果之前,请务必检查返回值。
最佳实践
- 错误处理: 始终检查 false 的返回值。
- 权限: 确保脚本具有文件系统读取权限。
- 网络路径: 可能无法可靠地与网络共享一起使用。
- 缓存: 结果可能会在调用之间被操作系统缓存。
- 单位: 转换字节以进行人类可读的显示。
来源
本教程介绍了 PHP 的 disk_total_space
函数,并提供了实际示例,展示了在不同场景下进行磁盘空间监控的方法。
作者
列出 所有 PHP 文件系统函数。