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 文件系统函数。