(double)$totalMemory, 'used' => (double)$usedMemory, 'percentage' => (double)number_format($usedMemory / $totalMemory * 100, 2)]; } else { return ['total' => 0, 'used' => 0, 'percentage' => 0]; } } /** * 格式化字节数为更人性化的显示方式 * * @param int $bytes 字节数 * @return string 格式化后的字符串 */ public static function formatBytes(int $bytes): string { $units = array('Byte', 'KB', 'MB', 'GB', 'TB'); $index = 0; while ($bytes >= 1024 && $index < count($units) - 1) { $bytes /= 1024; $index++; } return round($bytes, 2) . ' ' . $units[$index]; } static function getDiskData(): array { $df_output = shell_exec('df -h'); $lines = explode("\n", $df_output); $disk_usage = array(); for ($i = 1; $i < count($lines); $i++) { if (empty(trim($lines[$i]))) { continue; } // 分割每一行的数据,以空格作为分隔符 $data = preg_split('/\s+/', $lines[$i]); // 提取所需的信息,例如文件系统路径、总大小、已用空间、可用空间、使用率 $filesystem = $data[0]; $total_size = $data[1]; $used_space = $data[2]; $available_space = $data[3]; $usage_percent = $data[4]; $mounts = $data[5]; if ($mounts == "/") { // 将信息存储到关联数组中 $disk_usage[] = array( 'filesystem' => $filesystem, 'total_size' => $total_size, 'used_space' => $used_space, 'available_space' => $available_space, 'usage_percent' => (double)preg_replace("#%#", '', $usage_percent), //去掉内容中的%, 'mounted'=>$mounts ); } } return $disk_usage; } }