乐于分享
好东西不私藏

�� 小龙虾 OpenClaw 养殖日记(三)

�� 小龙虾 OpenClaw 养殖日记(三)

上一期回顾

上回说到,我们给小龙虾安装了各种技能包,让它从一只普通的虾变成了一只多才多艺的小助手。

今天,我们来聊聊养殖小龙虾最重要的事情:安全


灵魂拷问:你的小龙虾安全吗?

养过宠物的人都知道,最可怕的事情不是宠物不听话,而是宠物走丢或者被坏人偷走

OpenClaw 也是如此。如果不注意安全:

  • 🔓 服务器被入侵,数据泄露

  • 🤖 AI 被恶意诱导,说出不该说的话

  • 💰 工具被滥用,产生意外费用

  • 📴 服务突然宕机,业务中断

所以,今天我们就来给小龙虾装上门锁、加固体质、自动巡检、让它自己发现问题自己处理


一、安全加固:给小龙虾装上门锁

1.1 为什么要加固?

小龙虾虽然聪明,但它毕竟是一只虾——不会自己判断危险

举几个例子:

  • 有人问你服务器密码,小龙虾可能会直接回答

  • 有人发送恶意链接,小龙虾可能会帮你点击

  • 有人想让小龙虾删库跑路,小龙虾可能会执行

所以我们需要安全策略来限制它的行为。

1.2 配置文件介绍

OpenClaw 的安全配置在 ~/.openclaw/config.yml 中:

security:
# 允许执行的命令白名单
  allowCommands:
    - git
    - npm
    - node
    - python

# 禁止执行的命令黑名单
  denyCommands:
    - rm -rf /
    - drop database
    - shutdown

# 是否允许外部网络请求
  allowExternalRequeststrue

# 是否允许执行 Shell 命令
  allowShellExectrue

# 权限级别
permissions:
# 初级模式:只允许安全的只读操作
  level"read-only"

# 中级模式:允许执行预定义的工具
# 高级模式:允许执行任意命令(危险!)
# level: "full"

1.3 推荐的安全配置

入门级(新手推荐):

security:
  allowCommands:
    - git
    - npm
    - node
    - python
    - curl

  denyCommands:
    - rm -rf /
    - mkfs
    - shutdown

  allowExternalRequeststrue
  allowShellExecfalse  # 关闭 Shell 执行,更安全

进阶级(有经验者):

security:
  allowCommands:
    - git
    - npm
    - node
    - python
    - docker
    - systemctl

  denyCommands:
    - rm -rf / --no-preserve-root
    - init 0
    - init 6

  allowExternalRequeststrue
  allowShellExectrue
  maxExecTimeout300  # 单次命令最长 5 分钟

1.4 SSH 密钥管理

如果你的 OpenClaw 需要连接远程服务器,一定要用 SSH 密钥而不是密码

# 1. 生成 SSH 密钥
ssh-keygen -t ed25519 -C"openclaw@your-server"

# 2. 把公钥复制到服务器
ssh-copy-id -i ~/.ssh/openclaw.pub user@your-server

# 3. 配置 SSH 客户端使用这个密钥
cat >> ~/.ssh/config <<EOF
Host openclaw-server
    HostName your-server.com
    User admin
    IdentityFile ~/.ssh/openclaw
    IdentitiesOnly yes
EOF

1.5 环境变量保密

敏感信息(如 API Key、密码)不要写在代码里,要放在环境变量中:

# 在 ~/.bashrc 或 ~/.zshrc 中添加
exportOPENAI_API_KEY="sk-xxxxx"
exportFEISHU_APP_ID="cli_xxxxx"
exportFEISHU_APP_SECRET="xxxxx"

然后在代码中这样使用:

constapiKey=process.env.OPENAI_API_KEY;
if (!apiKey) {
console.error("❌ 请设置 OPENAI_API_KEY 环境变量");
process.exit(1);
}

二、自动化巡检:让小龙虾每天自己巡检

2.1 什么是自动化巡检?

想象你有一个员工,每天自动检查服务器状态、监控指标、磁盘空间——发现问题就报警,不需要你操心。

这就是自动化巡检。

2.2 使用 Cron 定时任务

Linux 的 cron 可以让小龙虾自动执行任务:

# 编辑定时任务
crontab -e

# 添加以下任务:

# 每小时检查一次服务器状态
0 * * * * cd ~/.openclaw && node scripts/health-check.js

# 每天早上 9 点巡检(北京时间)
01 * * * cd ~/.openclaw && node scripts/daily-inspection.js  # UTC 1点 = 北京 9点

# 每周一早上 9 点生成周报
01 * * 1cd ~/.openclaw && node scripts/weekly-report.js

2.3 巡检脚本示例

// scripts/health-check.js
const { execSync } =require('child_process');
constaxios=require('axios');

asyncfunctionhealthCheck() {
console.log("🔍 开始巡检...");

constresults= {
cpuawaitcheckCPU(),
memoryawaitcheckMemory(),
diskawaitcheckDisk(),
servicesawaitcheckServices()
  };

// 如果有问题,发送报警
if (results.cpu>90||results.disk>85) {
awaitsendAlert("⚠️ 服务器状态异常!"results);
  }

console.log("✅ 巡检完成");
console.log(JSON.stringify(resultsnull2));
}

asyncfunctioncheckCPU() {
// 使用 top 命令获取 CPU 使用率
constoutput=execSync("top -bn1 | grep 'Cpu(s)' | awk '{print $2}'").toString();
returnparseFloat(output);
}

asyncfunctioncheckMemory() {
constoutput=execSync("free -m | grep Mem | awk '{print $3/$2 * 100}'").toString();
returnparseFloat(output);
}

asyncfunctioncheckDisk() {
constoutput=execSync("df -h / | tail -1 | awk '{print $5}' | sed 's/%//'").toString();
returnparseFloat(output);
}

asyncfunctioncheckServices() {
constservices= ["docker""redis""mysql"];
constresults= {};

for (constsvcofservices) {
try {
execSync(`systemctl is-active ${svc}`, { stdio'ignore' });
results[svc="✅ 运行中";
    } catch {
results[svc="❌ 已停止";
    }
  }

returnresults;
}

asyncfunctionsendAlert(messagedata) {
// 这里可以接入飞书机器人、邮件等报警渠道
console.error("🚨 报警:"messagedata);
}

healthCheck().catch(console.error);

2.4 巡检报告样例

运行巡检后,你会收到这样的报告:

🦞 小龙虾自动巡检报告
时间: 2026-04-02 10:00:00

【服务器状态】
| 指标 | 状态 | 值 |
|------|------|-----|
| CPU | ✅ 正常 | 35.2% |
| 内存 | ⚠️ 偏高 | 78.5% |
| 磁盘 | ✅ 正常 | 62.1% |

【服务状态】
| 服务 | 状态 |
|------|------|
| Docker | ✅ 运行中 |
| Redis | ✅ 运行中 |
| MySQL | ❌ 已停止 |

【建议】
内存使用率偏高,建议关注。
MySQL 服务已停止,请立即检查!

三、故障自愈:让小龙虾自己发现问题自己处理

3.1 什么是故障自愈?

想象你的小龙虾不仅能发现问题,还能自动解决问题

  • Redis 挂了 → 自动重启

  • 磁盘满了 → 自动清理旧日志

  • 服务超时 → 自动重试

这就是故障自愈

3.2 常见故障处理策略

策略一:自动重启服务

asyncfunctionautoRestart(service) {
console.log(`🔄 尝试重启 ${service}...`);

try {
// 先停止服务
execSync(`systemctl stop ${service}`, { stdio'ignore' });
awaitsleep(2000);

// 再启动服务
execSync(`systemctl start ${service}`);

// 检查是否启动成功
constisActive=execSync(`systemctl is-active ${service}`).toString().trim();

if (isActive==='active') {
console.log(`✅ ${service}重启成功`);
returntrue;
    }
  } catch (e) {
console.error(`❌ ${service}重启失败:`e.message);
  }

returnfalse;
}

策略二:清理磁盘空间

asyncfunctioncleanupDisk() {
console.log("🧹 开始清理磁盘...");

// 清理旧日志(保留最近 7 天)
execSync(`find /var/log -name "*.log" -mtime +7 -delete`);

// 清理 Docker 临时文件
execSync("docker system prune -f");

// 清理 npm 缓存
execSync("npm cache clean --force");

// 清理旧的 core dump 文件
execSync(`find / -name "core.*" -mtime +1 -delete 2>/dev/null`);

console.log("✅ 清理完成");
}

策略三:自动扩容

asyncfunctionautoScale() {
// 检查当前负载
constcpu=awaitcheckCPU();
constmemory=awaitcheckMemory();

if (cpu>80||memory>85) {
console.log("📈 负载过高,尝试扩容...");

// 这里是伪代码,实际需要根据你的基础设施来写
execSync("docker-compose up -d --scale app=3");

console.log("✅ 已扩容,当前实例数: 3");
  }
}

3.3 自愈编排示例

// scripts/self-healing.js
classSelfHealing {
constructor() {
this.strategies= [
      { name"redis"checkthis.checkRedisfix: () =>this.autoRestart("redis") },
      { name"docker"checkthis.checkDockerfix: () =>this.autoRestart("docker") },
      { name"disk"checkthis.checkDiskfixthis.cleanupDisk },
    ];
  }

asyncrun() {
console.log("🔧 开始故障自愈检查...");

for (conststrategyofthis.strategies) {
constisHealthy=awaitstrategy.check();

if (!isHealthy) {
console.log(`⚠️ ${strategy.name}状态异常,尝试自愈...`);
awaitstrategy.fix();
      } else {
console.log(`✅ ${strategy.name}状态正常`);
      }
    }

console.log("🔧 自愈检查完成");
  }

asynccheckRedis() {
try {
execSync("redis-cli ping", { stdio'ignore' });
returntrue;
    } catch {
returnfalse;
    }
  }

asynccheckDocker() {
try {
execSync("docker info", { stdio'ignore' });
returntrue;
    } catch {
returnfalse;
    }
  }

asynccheckDisk() {
constusage=parseFloat(execSync("df / | tail -1 | awk '{print $5}'").toString().replace('%'''));
returnusage<85;
  }

asyncautoRestart(service) {
// 实现自动重启...
  }

asynccleanupDisk() {
// 实现磁盘清理...
  }
}

newSelfHealing().run();

四、定制外观:让小龙虾的输出更好看

4.1 为什么外观很重要?

同样的内容,好看的排版让人更愿意看。

试想两个版本的巡检报告:

普通版:

cpu 35% memory 78% disk 62%

美观版:

📊 服务器状态
CPU: ████████░░ 35%
内存: ████████████████░░░ 78%
磁盘: ████████████░░░░░░ 62%

哪个更想看?

4.2 使用 Emoji

Emoji 是让输出变好看的最简单方法:

场景推荐 EMOJI
成功✅ 🎉 🚀 💪
失败❌ 🚨 ⚠️ 🔴
进行中🔄 ⏳ 🔍 🦞
信息📢 📊 💡 🔗

4.3 使用进度条

functionrenderProgressBar(valuemax=100width=20) {
constpercentage=Math.min(value/max1);
constfilled=Math.round(percentage*width);
constempty=width-filled;

constbar='█'.repeat(filled+'░'.repeat(empty);
constpercent=Math.round(percentage*100);

return`[${bar}] ${percent}%`;
}

console.log("CPU:   "+renderProgressBar(35));
console.log("内存:  "+renderProgressBar(78));
console.log("磁盘:  "+renderProgressBar(62));

输出:

CPU:   [███████░░░░░░░░░░░░] 35%
内存:  [████████████████░░░░] 78%
磁盘:  [███████████░░░░░░░░] 62%

4.4 使用表格

functionrenderTable(headersrows) {
// 计算每列宽度
constwidths=headers.map((hi=> {
constmaxRow=Math.max(...rows.map(r=>String(r[i]).length));
returnMath.max(h.lengthmaxRow);
  });

// 表头
constheaderLine='| '+headers.map((hi=>h.padEnd(widths[i])).join(' | '+' |';
constdivider='|'+widths.map(w=>'-'.repeat(w+2)).join('+|'+'|';

// 数据行
constdataLines=rows.map(row=> {
return'| '+row.map((celli=>String(cell).padEnd(widths[i])).join(' | '+' |';
  });

return [headerLinedivider...dataLines].join('\n');
}

// 使用
constheaders= ["服务""状态""响应时间"];
constrows= [
  ["API""✅ 正常""45ms"],
  ["数据库""✅ 正常""12ms"],
  ["Redis""❌ 异常""-"],
];

console.log(renderTable(headersrows));

输出:

| 服务   | 状态   | 响应时间 |
|--------|--------|----------|
| API    | ✅ 正常 | 45ms     |
| 数据库 | ✅ 正常 | 12ms     |
| Redis  | ❌ 异常 | -        |

4.5 使用颜色(终端)

如果你的终端支持 ANSI 颜色码:

constcolors= {
reset'\x1b[0m',
red'\x1b[31m',
green'\x1b[32m',
yellow'\x1b[33m',
blue'\x1b[34m',
};

functioncolor(textcolor) {
return`${colors[color]}${text}${colors.reset}`;
}

console.log(color("✅ 成功""green"));
console.log(color("❌ 失败""red"));
console.log(color("⚠️ 警告""yellow"));
console.log(color("ℹ️ 信息""blue"));

五、实战:打造你的专属运维助手

结合今天学到的所有内容,我们可以打造一个完整的运维助手:

// scripts/ops-assistant.js
classOpsAssistant {
constructor() {
this.name="小龙虾运维助手";
this.version="1.0.0";
  }

asyncrun() {
console.log(`
🦞 ${this.name}v${this.version}
${'='.repeat(40)}
`);

// 1. 健康检查
awaitthis.healthCheck();

// 2. 自动化巡检
awaitthis.inspection();

// 3. 故障自愈
awaitthis.selfHealing();

console.log(`
${'='.repeat(40)}
🦞 运维巡检完成
`);
  }

asynchealthCheck() {
console.log("📊 健康检查...\n");
// ... 实现见 2.3 节
  }

asyncinspection() {
console.log("🔍 自动化巡检...\n");
// ... 实现见 2.3 节
  }

asyncselfHealing() {
console.log("🔧 故障自愈检查...\n");
// ... 实现见 3.3 节
  }
}

newOpsAssistant().run();

运行效果:

🦞 小龙虾运维助手 v1.0.0
========================================

📊 健康检查...

【服务器状态】
| 指标 | 状态 | 值 |
|------|------|-----|
| CPU | ✅ 正常 | 35.2% |
| 内存 | ⚠️ 偏高 | 78.5% |
| 磁盘 | ✅ 正常 | 62.1% |

🔍 自动化巡检...

【服务状态】
| 服务 | 状态 |
|------|------|
| Docker | ✅ 运行中 |
| Redis | ✅ 运行中 |

🔧 故障自愈检查...

✅ Redis 状态正常
✅ Docker 状态正常
✅ 无需自愈

========================================
🦞 运维巡检完成

六、常见问题

Q1: 自动巡检太频繁影响服务器性能?

把巡检间隔调大,或者使用轻量级的检查方式:

# 原来每分钟巡检
* * * * * /root/.openclaw/node/bin/node /root/.openclaw/workspace/skills/prometheus/scripts/health-check.js

# 改成每小时一次
0 * * * * /root/.openclaw/node/bin/node /root/.openclaw/workspace/skills/prometheus/scripts/health-check.js

Q2: 自愈操作失败了怎么办?

加入人工确认机制:

asyncfunctionautoFixWithConfirm(service) {
console.log(`⚠️ ${service}需要修复`);
console.log(`建议操作: systemctl restart ${service}`);
console.log(`请输入 "yes" 确认执行:`);

constanswer=awaitprompt();  // 等待用户输入

if (answer.toLowerCase() ==='yes') {
awaitautoRestart(service);
  } else {
console.log("❌ 已取消,等待人工处理");
  }
}

Q3: 如何让巡检报告发送到飞书?

参考 feishu-im 技能的说明,调用飞书机器人 API:

asyncfunctionsendToFeishu(message) {
awaitaxios.post('https://open.feishu.cn/open-apis/bot/v2/hook/xxx', {
msg_type'text',
content: { textmessage }
  });
}

今日小结

今天我们学会了:

  • ✅ 安全加固:配置白名单/黑名单、使用 SSH 密钥、管理环境变量

  • ✅ 自动化巡检:用 cron 定时任务 + 巡检脚本

  • ✅ 故障自愈:自动重启、清理磁盘、自动扩容

  • ✅ 定制外观:Emoji、进度条、表格、颜色


下期预告

小龙虾养殖日记(四)将会介绍:

  • 🌐 开放 API:让小龙虾可以被其他系统调用

  • 🔗 Webhook:小龙虾如何接收外部事件

  • 🤖 多 Agent 协作:多只小龙虾一起工作

  • 🏠 智能家居:用小龙虾控制家里的设备

敬请期待!


往期回顾:

  • 🦞 小龙虾 OpenClaw 养殖日记(一)

  • 🦞 小龙虾 OpenClaw 养殖日记(二)


🦞 小龙虾养殖日记,记录你与 AI 助手的日常

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-04-03 13:32:57 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/496696.html
  2. 运行时间 : 0.189839s [ 吞吐率:5.27req/s ] 内存消耗:4,773.66kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=b6f6b4e3617195f62d61262b41d2c2e8
  1. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_static.php ( 6.05 KB )
  7. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/ralouphie/getallheaders/src/getallheaders.php ( 1.60 KB )
  10. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  11. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  12. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  13. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  14. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  15. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  16. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  17. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  18. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  19. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions_include.php ( 0.16 KB )
  21. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions.php ( 5.54 KB )
  22. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  23. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  24. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  25. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/provider.php ( 0.19 KB )
  26. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  27. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  28. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  29. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/common.php ( 0.03 KB )
  30. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  32. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/alipay.php ( 3.59 KB )
  33. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  34. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/app.php ( 0.95 KB )
  35. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cache.php ( 0.78 KB )
  36. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/console.php ( 0.23 KB )
  37. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cookie.php ( 0.56 KB )
  38. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/database.php ( 2.48 KB )
  39. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/filesystem.php ( 0.61 KB )
  40. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/lang.php ( 0.91 KB )
  41. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/log.php ( 1.35 KB )
  42. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/middleware.php ( 0.19 KB )
  43. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/route.php ( 1.89 KB )
  44. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/session.php ( 0.57 KB )
  45. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/trace.php ( 0.34 KB )
  46. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/view.php ( 0.82 KB )
  47. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/event.php ( 0.25 KB )
  48. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  49. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/service.php ( 0.13 KB )
  50. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/AppService.php ( 0.26 KB )
  51. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  52. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  53. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  54. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  55. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  56. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/services.php ( 0.14 KB )
  57. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  58. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  59. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  60. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  61. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  62. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  63. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  64. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  65. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  66. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  67. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  68. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  69. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  70. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  71. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  72. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  73. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  74. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  75. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  76. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  77. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  78. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  79. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  80. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  81. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  82. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  83. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  84. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  85. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  86. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  87. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/Request.php ( 0.09 KB )
  88. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  89. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/middleware.php ( 0.25 KB )
  90. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  91. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  92. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  93. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  94. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  95. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  96. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  97. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  98. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  99. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  100. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  101. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  102. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  103. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/route/app.php ( 3.94 KB )
  104. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  105. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  106. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Index.php ( 9.87 KB )
  108. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/BaseController.php ( 2.05 KB )
  109. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  110. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  111. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  112. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  113. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  114. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  115. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  116. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  117. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  118. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  119. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  120. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  121. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  122. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  123. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  124. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  125. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  126. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  127. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  128. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  129. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  130. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  131. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  132. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  133. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  134. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  135. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Es.php ( 3.30 KB )
  136. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  137. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  138. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  139. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  140. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  141. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  142. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  143. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  144. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/runtime/temp/c935550e3e8a3a4c27dd94e439343fdf.php ( 31.80 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.001024s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001560s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000722s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000676s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001301s ]
  6. SELECT * FROM `set` [ RunTime:0.000566s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001475s ]
  8. SELECT * FROM `article` WHERE `id` = 496696 LIMIT 1 [ RunTime:0.001759s ]
  9. UPDATE `article` SET `lasttime` = 1775194378 WHERE `id` = 496696 [ RunTime:0.010298s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000376s ]
  11. SELECT * FROM `article` WHERE `id` < 496696 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.002249s ]
  12. SELECT * FROM `article` WHERE `id` > 496696 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000524s ]
  13. SELECT * FROM `article` WHERE `id` < 496696 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.004677s ]
  14. SELECT * FROM `article` WHERE `id` < 496696 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.003979s ]
  15. SELECT * FROM `article` WHERE `id` < 496696 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.001287s ]
0.191658s