可通过读取/proc/uptime文件或调用uptime命令获取linux服务器运行时长,thinkphp需借助php系统调用实现,支持web接口、cli命令及健康检查等多种集成方式。

如果您需要获取运行 ThinkPHP 应用的 Linux 服务器当前已连续运行时长(uptime),则需直接读取系统内核暴露的 /proc/uptime 文件或调用 uptime 命令。ThinkPHP 框架本身不提供服务器 uptime 监控能力,该指标完全属于操作系统层面,必须通过 PHP 的系统调用接口安全获取。以下是多种独立、可互换的实现方式:
一、使用 PHP exec() 调用 uptime 命令
该方法依赖系统自带 uptime 工具,输出人类可读格式(如“12 days, 5:34”),适合快速集成到管理后台或健康检查页,但需确保 PHP 进程有执行 shell 命令权限且未禁用 exec 函数。
1、确认服务器上 uptime 命令可用:在终端执行 uptime,观察是否返回正常结果。
2、在 ThinkPHP 控制器中编写逻辑:exec('uptime', $output, $return_code); if ($return_code === 0) { $uptime_text = trim($output[0]); }
3、将 $uptime_text 输出至视图或 API 响应中,注意过滤控制字符。
二、解析 /proc/uptime 文件获取原始秒数
该方法绕过外部命令,直接读取内核虚拟文件系统,性能更高、更轻量,返回值为浮点秒数(如 1048576.12),适用于需精确计算或做阈值判断的场景,且无需启用 PHP 危险函数。
1、使用 file_get_contents 读取:$raw = @file_get_contents('/proc/uptime');
2、校验读取结果是否有效:if (false !== $raw && preg_match('/^(\d+\.\d+)/', $raw, $matches)) { $seconds = (float)$matches[1]; }
3、将秒数转换为“X 天 Y 小时 Z 分钟”格式,例如调用自定义函数 format_uptime($seconds)。
三、通过 sys_getloadavg() 辅助验证系统稳定性
uptime 仅反映持续运行时间,不能单独说明系统健康;配合负载均值可交叉判断是否长期高负载运行。sys_getloadavg() 返回最近 1/5/15 分钟系统平均负载,若 uptime 很长但 load 均值持续 > CPU 核心数,则提示潜在资源瓶颈。
1、调用函数获取负载数组:$loads = sys_getloadavg();
2、获取 CPU 核心数用于比对:$cores = (int)@file_get_contents('/proc/cpuinfo'); $cores = substr_count($cores, 'processor\t:');
3、判断 1 分钟负载是否超阈值:if (isset($loads[0]) && $loads[0] > $cores * 2) { /* 触发告警标记 */ }
四、封装为 ThinkPHP 命令行指令
该方法将 uptime 获取逻辑封装为 Artisan 风格命令,便于运维人员通过 CLI 定期巡检或接入监控脚本,避免暴露于 Web 接口,提升安全性。
1、在 app/command 目录下创建 UptimeCommand.php 类,继承 think\console\Command。
2、重写 configure() 方法设置命令名为 server:uptime。
3、在 execute() 方法中调用 file_get_contents('/proc/uptime') 并格式化输出,使用 $this->output()->writeln() 打印。
4、执行命令:php think server:uptime。
五、集成至健康检查接口并限制访问
该方法将 uptime 数据作为 /health 端点的组成部分,供 Prometheus 或 Zabbix 主动拉取,同时强制要求 Basic Auth 或 IP 白名单,防止敏感系统信息被未授权访问。
1、在路由定义中添加闭包或控制器方法,路径设为 /health,中间件启用 auth.basic 或自定义 IP 限制中间件。
2、响应体中包含 uptime 字段:['status' => 'ok', 'uptime_seconds' => (int)$seconds, 'timestamp' => time()]。
3、配置 Nginx 或 Apache 禁止该路径被日志记录:access_log off;。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











