📊 NPS内网穿透 流量单位格式化函数解析与使用说明api开发
› VFX大学 › Linux/macOS 与自动化运维 › 📊 NPS内网穿透 流量单位格式化函数解析与使用说明api开发
标签: nps
- This topic is empty.

-
作者帖子
-
-
2025年7月28日 - 下午4:09 #833
追光管理员这份文档所有单位换算、接口地址、使用逻辑,全是通过无数次抓包、试错、逆向分析一点点摸索出来的。官方没有正式文档,全靠实践总结。在此分享给更多开发者。希望不要再走一遍弯路。
这是一个非常实用的函数,索性我把函数也分享出来给大家参考。下面是我为你整理的一篇完整博文样式的技术说明文档,可以用于:NPS 系统接口开发文档的一部分。
在对接 NPS API 时,经常会遇到各种类型的流量或速率字段:FlowLimit、ExportFlow、NowRate……
这些字段单位不一,有的是 MB、有的是 Byte、还有的是 KB/s,我们需要一个统一的格式化工具函数来处理。
以下是我在开发 WordPress 插件过程中整理出的格式化函数,经过反复修改完善,已适配各种实际字段:
✅ 核心函数:
format_flow_mb()
/** * ✅ 流量单位转化器,输入单位 MB、Byte 或 KB/s,自动格式化为 MB、GB、Mbps 等。 * @param float|int $value 流量或速率原始值 * @param string $field 字段名,用于判断类型(如 flowlimit、inletflow、nowrate) * @param int $decimals 保留小数位,默认2 * @return string 格式化后的值(如 "512.00 MB"、"1.2 GB"、"3.5 Mbps") */ function format_flow_mb($value, $field = '', $decimals = 2) { $value = floatval($value); if ($value < 0) $value = 0; $field = strtolower($field); // 🎯 流量包限制:单位通常是 MB,显示为 MB / GB if (in_array($field, ['flowlimit', 'flow_limit'])) { return $value >= 1024 ? round($value / 1024, $decimals) . ' GB' : round($value, $decimals) . ' MB'; } // 📉 速率限制:单位为 KB/s,转换为 Mbps if (in_array($field, ['ratelimit', 'rate_limit'])) { if ($value <= 0) return '不限速'; $mbps = ($value * 8) / 1000; return round($mbps, $decimals) . ' Mbps'; } // 📥 出/入流量:单位为 Byte,转换为 GB/MB/KB/B if (in_array($field, ['exportflow', 'inletflow', 'export_flow', 'inlet_flow'])) { if ($value >= 1073741824) { return round($value / 1073741824, $decimals) . ' GB'; } elseif ($value >= 1048576) { return round($value / 1048576, $decimals) . ' MB'; } elseif ($value >= 1024) { return round($value / 1024, $decimals) . ' KB'; } else { return $value . ' B'; } } // 🚀 实时速率(当前下载上传速度):单位 Byte/s,转换为 Mbps 并显示原速率 if (in_array($field, ['nowrate', 'now_rate'])) { $mbps = ($value * 8) / 1000 / 1000; if ($value >= 1048576) { return round($value / 1048576, $decimals) . ' MB/s (' . round($mbps, $decimals) . ' Mbps)'; } elseif ($value >= 1024) { return round($value / 1024, $decimals) . ' KB/s (' . round($mbps, $decimals) . ' Mbps)'; } else { return $value . ' B/s (' . round($mbps, $decimals) . ' Mbps)'; } } // 📦 默认单位处理(MB → GB) return $value >= 1024 ? round($value / 1024, $decimals) . ' GB' : round($value, $decimals) . ' MB'; }
🧠 字段单位说明一览
字段名
原始单位
格式化后样式
说明
flowlimit
MB
128.00 MB or 1.25 GB
套餐流量上限(静态)
ratelimit
KB/s
2.00 Mbps
速率限制
exportflow
Byte
1.23 GB
客户端已上传流量(累计)
inletflow
Byte
456.78 MB
客户端已下载流量(累计)
nowrate
Byte/s
200 KB/s (1.60 Mbps)
实时速率(显示在监控面板)
✅ 示例用法
$export = format_flow_mb($client_data['Flow']['ExportFlow'], 'export_flow'); $inlet = format_flow_mb($client_data['Flow']['InletFlow'], 'inlet_flow'); $rate = format_flow_mb($client_data['Flow']['NowRate'], 'now_rate');
🔚 总结
这个函数统一了解析格式,避免在每个页面上写重复逻辑,非常适用于 NPS 自建系统或插件的信息面板、用户中心、流量统计等模块。
如果你也在使用 NPS 做平台开发,可以把这个函数做成全局辅助函数(helper),或注册到 WordPress 的 functions.php 里。
-
-
作者帖子
- 在下方一键注册,登录后就可以回复啦。