如何在Linux虚拟主机获取专属账户的负载信息?
获取cPanel虚拟主机中单个账户的CPU负载
可行方案
1. 调用cPanel UAPI接口获取官方统计
cPanel提供了用户级API(UAPI)可以直接拉取当前账户的资源使用数据,其中包含CPU使用率、内存占用等信息。你可以通过PHP的curl实现调用:
// 替换为你的cPanel账户信息 $cpanel_user = 'your_username'; $cpanel_token = 'your_api_token'; $cpanel_host = 'your_cpanel_hostname'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://{$cpanel_host}:2083/execute/ResourceUsage/get_usages"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt($ch, CURLOPT_USERPWD, "{$cpanel_user}:{$cpanel_token}"); // 生产环境建议开启SSL验证,调试时可暂时关闭 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $response = curl_exec($ch); curl_close($ch); $resource_data = json_decode($response, true); if ($resource_data['status'] === 1) { $cpu_percent = $resource_data['data']['cpu']['percent']; echo "当前账户CPU使用率:{$cpu_percent}%"; } else { echo "获取失败:" . ($resource_data['errors'][0] ?? '未知错误'); }
注意:需要先在cPanel面板中生成API令牌,且主机提供商需开放UAPI的访问权限。
2. 统计当前账户进程的CPU占用总和
如果无法使用API,可以通过系统命令枚举当前账户的所有进程,计算总CPU使用率:
// 获取当前运行账户的进程CPU数据 $ps_output = shell_exec('ps -u ' . get_current_user() . ' -o %cpu --no-headers'); $cpu_values = array_filter(array_map('trim', explode("\n", $ps_output)), 'is_numeric'); $total_cpu = array_sum($cpu_values); echo "当前账户总CPU使用率:{$total_cpu}%";
注意:部分虚拟主机会禁用exec/shell_exec等函数,需要先确认主机是否允许此类调用。这种方式是实时计算进程占用,和cPanel显示的时间段统计平均值可能存在差异。
关于phpsysinfo的说明
phpsysinfo展示的是服务器整体的CPU核心负载,虚拟主机的账户是共享CPU资源的,并非固定绑定某个核心,因此核心负载无法直接对应到单个账户的使用情况。
内容的提问来源于stack exchange,提问作者Robert Baumann
相关产品推荐
相关产品推荐

