当前位置:首页>python>Shell只能干苦力?加上Python和Ansible,这套巡检方案绝了!

Shell只能干苦力?加上Python和Ansible,这套巡检方案绝了!

  • 2026-03-28 15:49:09
Shell只能干苦力?加上Python和Ansible,这套巡检方案绝了!

运维圈子里有个说法:"Shell脚本是运维的祖传手艺,不会写Shell就不算真正的运维工程师。"这话有一定道理,但不全对。Shell确实强大,但在大规模服务器巡检场景下,纯Shell方案往往会陷入"写脚本两小时,改bug一整天"的困境。

今天聊一套经过生产环境验证的巡检方案:Shell负责数据采集,Ansible负责批量调度,Python负责数据处理。三者各司其职,既能发挥各自优势,又能形成完整的自动化闭环。

一、为什么单一工具搞不定巡检

Shell的局限性

Shell脚本在单台服务器上执行命令确实高效,但面对几十台甚至上百台服务器时,问题接踵而至:

  • • 并发控制能力弱:手动写循环串行执行,100台服务器巡检一遍可能要几十分钟
  • • 结果汇总困难:每台服务器生成一个日志文件,人工查看效率极低
  • • 跨平台兼容性差:Linux用Bash,Windows得换PowerShell,维护两套脚本成本翻倍

Ansible的短板

Ansible作为自动化运维利器,在批量执行方面确实出色,但直接用它做数据分析并不顺手。Ansible的debug模块输出的是文本格式,想要生成可视化报表或进行阈值分析,还需要额外的数据处理环节。

Python的定位

Python擅长数据处理和报表生成,但如果直接用它连接远程服务器执行命令,需要引入Paramiko等库处理SSH连接、身份认证、并发控制,反而把简单的事情复杂化了。

结论很明确:没有银弹,让合适的工具做合适的事。

二、方案架构设计

这套方案的核心思路是"分层解耦":

层级
工具
职责
采集层
Shell
在目标服务器上执行系统命令,收集原始数据
调度层
Ansible
批量分发执行采集脚本,汇总原始数据
处理层
Python
数据清洗、阈值分析、报表生成、告警通知

数据流向如下:

目标服务器(Shell采集) 
    ↓
Ansible控制节点(批量收集)
    ↓
原始数据文件(JSON/CSV格式)
    ↓
Python处理脚本(分析+报表)
    ↓
巡检报告(Excel/HTML) + 告警通知

三、具体实现步骤

第一步:编写Shell采集脚本

在目标服务器上部署采集脚本collect.sh,采集核心系统指标:

#!/bin/bash
# 采集时间
CHECK_TIME=$(date"+%Y-%m-%d %H:%M:%S")
HOSTNAME=$(hostname)
IP=$(hostname -I | awk '{print $1}')

# CPU使用率(取1分钟平均负载)
CPU_LOAD=$(uptime | awk -F'load average:''{print $2}' | awk '{print $1}' | sed 's/,//')
CPU_CORES=$(nproc)
CPU_USAGE=$(echo"scale=2; $CPU_LOAD / $CPU_CORES * 100" | bc)

# 内存使用率
MEM_TOTAL=$(free -m | awk '/Mem:/ {print $2}')
MEM_USED=$(free -m | awk '/Mem:/ {print $3}')
MEM_USAGE=$(echo"scale=2; $MEM_USED / $MEM_TOTAL * 100" | bc)

# 磁盘使用率(检查根分区)
DISK_USAGE=$(df -h / | awk 'NR==2 {print $5}' | sed 's/%//')

# 关键服务状态(根据实际业务调整)
NGINX_STATUS=$(systemctl is-active nginx 2>/dev/null || echo"unknown")
MYSQL_STATUS=$(systemctl is-active mysql 2>/dev/null || echo"unknown")

# 输出JSON格式,方便后续处理
cat <<EOF
{
    "hostname": "$HOSTNAME",
    "ip": "$IP",
    "check_time": "$CHECK_TIME",
    "cpu_usage": "$CPU_USAGE",
    "mem_usage": "$MEM_USAGE",
    "disk_usage": "$DISK_USAGE",
    "nginx_status": "$NGINX_STATUS",
    "mysql_status": "$MYSQL_STATUS"
}
EOF

这个脚本的关键点是输出标准化JSON,避免Ansible收集后再做复杂的文本解析。

第二步:编写Ansible Playbook

创建inspection.yml,实现批量采集:

---
-name:服务器自动化巡检
hosts:all
gather_facts:no
vars:
output_dir:"/opt/inspection/reports"
local_report_dir:"./reports"

tasks:
-name:确保远程采集脚本存在
copy:
src:./collect.sh
dest:/tmp/collect.sh
mode:'0755'

-name:执行采集脚本
shell:/tmp/collect.sh
register:inspection_result
ignore_errors:yes

-name:在控制节点创建报告目录
file:
path:"{{ local_report_dir }}"
state:directory
delegate_to:localhost
run_once:yes

-name:保存采集结果到本地
copy:
content:"{{ inspection_result.stdout }}"
dest:"{{ local_report_dir }}/{{ inventory_hostname }}.json"
delegate_to:localhost
when:inspection_result.rc==0

-name:记录失败主机
lineinfile:
path:"{{ local_report_dir }}/failed_hosts.txt"
line:"{{ inventory_hostname }} - {{ inspection_result.stderr }}"
create:yes
delegate_to:localhost
when:inspection_result.rc!=0

几点实践经验:

  • • 使用delegate_to: localhost将结果汇总到Ansible控制节点,避免分散在各目标服务器上
  • • ignore_errors: yes确保单台服务器故障不影响整体巡检流程
  • • 失败主机单独记录,便于后续排查

第三步:Python数据处理与报表生成

创建generate_report.py,实现数据分析和可视化:

import json
import os
import pandas as pd
from datetime import datetime
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication

defload_data(report_dir):
"""加载所有JSON巡检结果"""
    data = []
for filename in os.listdir(report_dir):
if filename.endswith('.json'):
withopen(os.path.join(report_dir, filename), 'r'as f:
try:
                    record = json.load(f)
                    data.append(record)
except json.JSONDecodeError:
print(f"解析失败: {filename}")
return data

defanalyze_data(data):
"""数据分析与阈值检查"""
    alerts = []
for item in data:
# CPU告警阈值:80%
iffloat(item.get('cpu_usage'0)) > 80:
            alerts.append({
'hostname': item['hostname'],
'ip': item['ip'],
'item''CPU使用率',
'value': item['cpu_usage'],
'threshold''80%',
'level''warning'
            })

# 内存告警阈值:85%
iffloat(item.get('mem_usage'0)) > 85:
            alerts.append({
'hostname': item['hostname'],
'ip': item['ip'],
'item''内存使用率',
'value': item['mem_usage'],
'threshold''85%',
'level''critical'
            })

# 磁盘告警阈值:90%
iffloat(item.get('disk_usage'0)) > 90:
            alerts.append({
'hostname': item['hostname'],
'ip': item['ip'],
'item''磁盘使用率',
'value': item['disk_usage'],
'threshold''90%',
'level''critical'
            })

# 服务状态检查
if item.get('nginx_status') != 'active':
            alerts.append({
'hostname': item['hostname'],
'ip': item['ip'],
'item''Nginx服务',
'value': item['nginx_status'],
'threshold''active',
'level''critical'
            })

return alerts

defgenerate_excel(data, alerts, output_file):
"""生成Excel巡检报告"""
with pd.ExcelWriter(output_file, engine='openpyxl'as writer:
# 汇总 sheet
        df_summary = pd.DataFrame(data)
        df_summary.to_excel(writer, sheet_name='巡检汇总', index=False)

# 告警 sheet
if alerts:
            df_alerts = pd.DataFrame(alerts)
            df_alerts.to_excel(writer, sheet_name='告警详情', index=False)
else:
            pd.DataFrame({'状态': ['无告警']}).to_excel(
                writer, sheet_name='告警详情', index=False
            )

defsend_email(report_file, recipients):
"""发送邮件通知"""
    msg = MIMEMultipart()
    msg['Subject'] = f"服务器巡检报告 - {datetime.now().strftime('%Y-%m-%d')}"
    msg['From'] = 'ops@company.com'
    msg['To'] = ', '.join(recipients)

# 邮件正文
    body = f"""
    各位好,

    附件为 {datetime.now().strftime('%Y-%m-%d')} 的服务器巡检报告,请查收。

    如有异常,请及时处理。
    """

    msg.attach(MIMEText(body, 'plain''utf-8'))

# 附件
withopen(report_file, 'rb'as f:
        attachment = MIMEApplication(f.read())
        attachment.add_header(
'Content-Disposition'
'attachment'
            filename=os.path.basename(report_file)
        )
        msg.attach(attachment)

# 发送(根据实际环境配置SMTP服务器)
# server = smtplib.SMTP('smtp.company.com', 25)
# server.send_message(msg)
# server.quit()

if __name__ == '__main__':
    report_dir = './reports'
    output_file = f"inspection_report_{datetime.now().strftime('%Y%m%d')}.xlsx"

# 加载数据
    data = load_data(report_dir)

# 分析告警
    alerts = analyze_data(data)

# 生成报表
    generate_excel(data, alerts, output_file)
print(f"报告已生成: {output_file}")

# 发送邮件(可选)
# send_email(output_file, ['admin@company.com'])

第四步:定时任务配置

使用crontab实现每日自动巡检:

# 每天凌晨2点执行巡检
0 2 * * * cd /opt/inspection && ansible-playbook -i hosts inspection.yml && python3 generate_report.py

四、适用场景

解决了哪些痛点

  1. 1. 效率提升:从手动登录每台服务器检查,到一键批量执行,100台服务器的巡检时间从2小时缩短到5分钟以内
  2. 2. 结果标准化:JSON格式的结构化数据,避免了Shell文本解析的繁琐和错误
  3. 3. 可追溯性:每日生成的报告文件留存,形成历史趋势数据,便于容量规划
  4. 4. 扩展性强:新增巡检项只需修改Shell采集脚本,无需改动整体架构

适用场景

  • • 中小企业:没有预算采购商业监控软件,但需要基本的巡检报告
  • • 混合云环境:同时管理本地机房和云服务器,Ansible的SSH方式通用性强
  • • 合规要求:需要定期生成纸质或电子巡检报告存档的行业(如金融、政务)

这套方案不是最酷炫的,但确实是最务实的。它不需要部署Agent,不依赖特定厂商的监控平台,用开源工具组合解决了实际问题。

当然,如果企业规模扩大到数千台服务器,或者需要实时监控而非定时巡检,建议引入Prometheus、Zabbix等专业监控方案。但在那之前,Shell + Ansible + Python的组合,足以支撑大多数场景的运维需求。

最新文章

随机文章

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