augushong
a43a9a48b9
feat(tools): XHProf 日志导入三层服务与函数监控物化
...
- XhprofProfileParserService(Base/App):纯数组解析 jsonl 行,
meta 字段以真实 fixture 为准;simple_url 缺失兜底与采集端回调同算法;
watch 正则按 callee 物化(ct/wt_sum/wt_max),非法正则编译计 fail 跳过
- XhprofLogReaderService(Base/App):增量读取,半行缓冲超限整行丢弃
(不照抄 nginx 8MB 强制切行);EOF 无换行半行不 yield 不推进 offset;
进度不自动落盘,由导入侧在同一事务内显式 savePosition
- XhprofLogImport 定时任务(Base/App):不受 XHPROF_ENABLE 门控,
runs-*.jsonl 按文件名序增量导入;run 逐条 insert + detail chunk 20
insertAll + run_watch insertAll 与 position 同事务落盘;导至 EOF 后
只删已导完文件
- 修复 T1 缺陷:request_time decimal(12,3) 装不下 10 位时间戳,
Scheme 与 migration 同步改 decimal(13,3)
- 新增 parser 单元测试(真实 fixture 断言,9 用例 42 断言)
与 jsonl fixture;phpunit 注册 unit 测试套件
2026-08-15 06:11:01 +08:00
augushong
b472df8c1d
feat(tools): XHProf 数据清理任务与定时注册
2026-08-15 05:47:34 +08:00
augushong
8faa52ce90
feat(nginx-log): 多节点适配(node_id 全链路 + 全局/按节点聚合 + 节点筛选 + v2.4.0 升级脚本)
...
- 6 张表加 node_id 字段 + position/stat 改复合唯一键(migration)
- 6 个 Scheme 同步 node_id 注解 + 唯一键
- Reader 带 node_id 参数 + 懒加载接管(getLastPosition 回退查 node_id='')
- Aggregator 全局行(node_id='')+ 按节点循环 insertAggregatesForScope
- Stat 所有查询方法加 where node_id 条件
- Dashboard 控制器/视图加节点筛选下拉框 + AJAX 带 node_id
- AccessLog 列表加节点列 + 采集进度卡片显示节点信息
- import 定时任务 run_type 改 all(每节点采集自己的日志)
- v2.4.0 升级脚本追加 ALTER TABLE(幂等 check-then-alter)
- 菜单调整:去掉 Nginx 顶级菜单 + 读取位置管理,改为系统管理下挂两个子菜单
- ulthon-timer 文档补充 run_type=all 多节点部署注意事项
2026-08-08 10:33:20 +08:00
augushong
f1a2e8fd5d
fix(nginx-log): service 文件加 Service 后缀(命名规范合规)
...
F2 Code quality review 发现:3 个新增 service 未遵守
.agents/rules/ulthon-naming-convention.md 第 19 行规定
(service 模块文件名需带 Service 后缀)。
变更:
- 重命名 6 个文件(3 Base + 3 App):
NginxLogParser(Base)→NginxLogParserService(Base)
NginxLogReader(Base)→NginxLogReaderService(Base)
NginxLogAggregator(Base)→NginxLogAggregatorService(Base)
- 同步类名、use、类型 hint、new 引用
- NginxLogReaderServiceBase 异常消息前缀同步加 Service
- controller Base 引用更新(NginxLogImportBase / NginxLogStatAggregateBase)
验证:
- php -l 全部 8 个文件语法通过
- grep 残留旧名 = 0 结果(24 处引用全部带 Service 后缀)
2026-07-28 06:57:13 +08:00
augushong
0f9f12174c
test(nginx-log): 权限节点扫描 + 端到端 QA 验证 + curd 路径修复
...
- 跑 admin:permission:nodes 扫描 138 个权限节点(17 个 nginx 相关节点)
- 17 个 nginx 节点 assign 给 role-id=1(写入 ul_system_auth_node 满足 plan 验收)
- curd 路径修复:菜单 href 由 system.nginx_access_log/index 改为 nginx.access_log/index(匹配 curd 生成的实际 URL,方案 B)
- SystemMenu.php / v2.4.0.php / DB ul_system_menu 三处同步(含 id=303 log_position)
- dashboard id=301 system.nginx_log_stat/index 保持不变(控制器确实在 system 模块)
- 端到端 QA 全通过:100 行日志 → import 74 行(静态过滤)→ aggregate stat_hour=1/url=6 → dashboard 数据完整
- 修复 T10 遗留 bug:cleanStatTables 用 Unix 时间戳当阈值,与 stat_date YYYYMMDD 不匹配导致误删
- threshold 从 strtotime('today')-days*86400 改为 (int) date('Ymd', strtotime('today')-days*86400)
- 验证:366 天前 stat 数据被删,今天 stat 数据保留
- 权限隔离:超管可访问,未登录被拦(code=40101 请先登录后台)
- Evidence: .omo/evidence/task-16-nginx-log-analytics-e2e/(15 个文件)
2026-07-28 06:47:24 +08:00
augushong
2b677c6f89
feat(nginx-log): NginxLogStatAggregate 定时任务 + timer config 注册
2026-07-28 06:02:07 +08:00
augushong
8eaa672ed6
feat(nginx-log): NginxLogClean 定时任务 + timer config 注册(完成 3 个 nginx 任务)
2026-07-28 06:00:15 +08:00
augushong
13b1313e92
feat(nginx-log): NginxLogImport 定时任务 + timer config 注册(Base/App 双层)
2026-07-28 05:48:46 +08:00
augushong
afd614e563
feat(timer): ClearLog 清理天数改为从配置读取,支持 env 覆盖
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-06-01 20:28:25 +08:00
augushong
e1bf94a55e
feat(timer): 新增日志每日自动清理定时任务
...
- New LogClean timer controller (site type, frequency 86400s)
- run_type defaults to auto, only one node cleans per day
- Cleans system_timer_log records older than 30 days
2026-05-26 18:33:45 +08:00
augushong
00af0fa628
feat: 去掉控制器中的运行节点注册机制
2025-08-24 14:01:36 +08:00
augushong
dea794d058
feat: 增加call类型的定时任务;
2025-08-24 14:00:20 +08:00
augushong
a9d1429000
feat: 增加内置节点注册任务;优化定时器代码结构;
2025-08-23 23:22:52 +08:00
augushong
c0b5880ae1
增加docker配置;修复重置命令错误;优化timer请求机制支持本地
2024-04-07 13:47:52 +08:00
augushong
6195ac6be5
将所有主要逻辑代码迁移到extend中,并在service中注册调用;
2023-10-18 16:32:28 +08:00