当前位置:首页>python>Python 运维实战:paramiko/requests 批量设备管理

Python 运维实战:paramiko/requests 批量设备管理

  • 2026-08-20 17:43:11
Python 运维实战:paramiko/requests 批量设备管理

一、开篇场景:紧急批量修复 SSH 配置

时间:2025 年 11 月的一个周五下午 4 点
人物:某互联网公司运维工程师小李
事件:安全团队扫描发现线上 200+ 台服务器的 SSH 配置存在弱加密算法(CVE-2025-XXXX),需要紧急批量修复。

传统方式:一台台登录服务器,手动修改 /etc/ssh/sshd_config,重启 sshd 服务,验证配置是否生效。
预计耗时:200 台 × 3 分钟 = 600 分钟 = 10 小时

小李的解决方案:用 Python + paramiko 写了个 50 行的脚本,并发连接 200 台服务器,15 分钟完成全部修复

这就是 Python 运维自动化的威力! 本文将从参数、原理、代码、踩坑到 AI 辅助,带你系统掌握 paramiko 和 requests 的批量管理技巧。

二、核心概念讲解

知识点 1:paramiko — SSH 协议的 Python 实现

【概念】是什么

paramiko 是 Python 实现的 SSHv2 协议库,支持:

  • SSH 客户端(远程命令执行、文件传输)

  • SSH 服务器(较少用)

  • SFTP 客户端(安全文件传输)

【原理】为什么需要 paramiko?

原生 SSH 命令的局限ssh user@host command 无法编程控制,难以处理复杂逻辑(如根据执行结果决定下一步操作)。

paramiko 的优势

  • 纯 Python 实现,跨平台

  • 支持密码、密钥、双因子认证

  • 可编程控制整个 SSH 会话

  • 支持 SFTP,实现批量文件分发

底层原理:使用 Python 的 socket 建立 TCP 连接,实现 SSHv2 协议的握手、密钥交换、认证、加密、压缩,支持多种加密算法(AES、Blowfish、3DES 等)。

【实操】完整命令 + 注释(带执行结果示例)

📦 安装 paramiko

pip install paramiko

🐍 示例 1:SSH 远程执行命令

import paramikoimport time# 配置信息HOST = '192.168.1.100'USER = 'root'PASSWORD = 'your_password'  # 生产环境建议用密钥认证# 创建 SSH 客户端client = paramiko.SSHClient()client.set_missing_host_key_policy(paramiko.AutoAddPolicy())try:    print(f"[{time.strftime('%H:%M:%S')}] 正在连接 {HOST}...")    client.connect(hostname=HOST, username=USER, password=PASSWORD, port=22, timeout=10)    print(f"[成功] 已连接到 {HOST}")    # 执行命令    stdin, stdout, stderr = client.exec_command('uptime && free -h', timeout=30)    output = stdout.read().decode('utf-8')    error = stderr.read().decode('utf-8')    if output:        print(f"\n[输出]\n{output}")    if error:        print(f"\n[错误]\n{error}")except paramiko.AuthenticationException:    print("[失败] 认证失败")except Exception as e:    print(f"[失败] {e}")finally:    client.close()f"\n[{time.strftime('%H:%M:%S')}] 连接已关闭"

📤 示例 2:SFTP 批量上传文件

def upload_file(host, user, password, local_path, remote_path):    client = paramiko.SSHClient()    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())    try:        client.connect(host, username=user, password=password)        sftp = client.open_sftp()        print(f"正在上传 {local_path}{host}:{remote_path}")        sftp.put(local_path, remote_path)        print("[成功] 文件已上传")        sftp.close()    finally:        client.close()

【应用】典型使用场景

  • 批量执行命令:检查磁盘使用率、收集日志、批量安装软件

  • 批量分发配置文件:将 nginx.conf、ssh 配置等分发到大量服务器

  • 批量收集日志:将每台服务器的日志集中拉取到控制机分析

⚠️ 踩坑提醒: 生产环境务必使用密钥认证,避免密码明文泄露。同时注意控制并发数,防止 SSH 连接数超限。

知识点 2:requests — HTTP 库的王者(及新一代 httpx)

【概念】是什么

requests 是 Python 最流行的 HTTP 库,用于调用 RESTful API、与 Web 服务交互(云服务 API、监控平台 API、CMDB API)、自动化测试。而 httpx 作为新一代 HTTP 客户端,支持 HTTP/2 和异步,正逐渐成为 requests 的强力竞争者。

【原理】为什么 requests 比原生 urllib 好用?

urllib 的痛点:API 繁琐、需要手动处理编码、不支持会话保持。
requests 的优势:人性化的 API、自动处理编码、重定向、Cookie,支持 Session 保持登录状态,内置 JSON 解析、文件上传、SSL 验证。

httpx 的亮点:完全兼容 requests 的 API,同时支持异步(async/await)和 HTTP/2,性能更优。

【实操】完整命令 + 注释

📦 安装 requests 和 httpx

pip install requests httpx

🌐 示例 1:调用 RESTful API 获取服务器信息(requests)

import requestsAPI_BASE = 'https://cmdb.example.com/api/v1'headers = {'Authorization': 'Token your_api_token'}response = requests.get(f'{API_BASE}/servers/', headers=headers, timeout=10)if response.status_code == 200:    servers = response.json()    print(f"共 {len(servers)} 台服务器")else:    print(f"失败: HTTP {response.status_code}")

⚡ 示例 2:使用 httpx 异步并发请求(新一代)

import httpximport asyncioasync def fetch_servers(client, url):    response = await client.get(url)    return response.json()async def main():    async with httpx.AsyncClient() as client:        tasks = [fetch_servers(client, 'https://api.example.com/v1/servers') for _ in range(10)]        results = await asyncio.gather(*tasks)        print(f"获取到 {len(results)} 个响应")asyncio.run(main())

【应用】典型使用场景

  • 自动化部署:触发 Jenkins/GitLab CI 构建

  • 云资源管理:调用 AWS/阿里云 API 启停实例

  • 监控数据上报:推送自定义指标到 Prometheus Pushgateway

💡 最佳实践: 对于大量并发 API 调用,推荐使用 httpx 的异步模式,性能优于 requests + 多线程。同时务必设置超时(timeout)和重试策略。

知识点 3:并发编程 — 让批量操作飞起来

【概念】是什么

并发编程让 Python 同时处理多个任务,提升批量操作的效率。常用方案:

  • 多线程(threading):适合 I/O 密集型任务(SSH、HTTP 请求)

  • 多进程(multiprocessing):适合 CPU 密集型任务

  • 异步 IO(asyncio):适合高并发场景(上万台服务器管理)

【原理】为什么需要并发?

串行执行的问题:100 台服务器 × 每台 3 秒 = 300 秒 = 5 分钟
并发执行的优势:20 个线程并发 × 每台 3 秒 = 15 秒(理论上)

Python 并发的局限与突破:GIL(全局解释器锁)限制了 CPU 密集型任务的并行,但 I/O 密集型任务在等待时会释放 GIL,因此多线程和异步非常适合网络运维场景。

【实操】完整命令 + 注释

🧵 使用 concurrent.futures 线程池(推荐)

import concurrent.futuresimport paramikodef run_command(server):    client = paramiko.SSHClient()    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())    try:        client.connect(server['host'], username=server['user'], password=server['password'], timeout=10)        stdin, stdout, stderr = client.exec_command('uptime', timeout=30)        return {'host': server['host'], 'output': stdout.read().decode()}    finally:        client.close()servers = [{'host': '192.168.1.100', 'user': 'root', 'password': 'pass'}] * 100with concurrent.futures.ThreadPoolExecutor(max_workers=20) as executor:    results = executor.map(run_command, servers)    for result in results:        print(f"{result['host']}: {result['output']}")

⚡ asyncio + asyncssh 异步 SSH(高并发利器)

import asyncioimport asyncsshasync def run_ssh(host, user, password):    async with asyncssh.connect(host, username=user, password=password) as conn:        result = await conn.run('uptime', check=True)        return host, result.stdoutasync def main():    hosts = ['192.168.1.100', '192.168.1.101']  # 可扩展至数千台    tasks = [run_ssh(host, 'root', 'pass') for host in hosts]    results = await asyncio.gather(*tasks)    for host, output in results:        print(f"{host}: {output.strip()}")asyncio.run(main())

⚡ 性能对比: 对于 1000 台服务器,串行执行约需 50 分钟,多线程(20 线程)约需 3 分钟,asyncio 可压缩至 1 分钟以内。建议根据实际服务器数量和网络条件选择合适的并发模型。

三、AI 赋能网络自动化:效率提升 6–12 倍

AI 工具生态

AI 工具用途适用场景
GitHub Copilot代码补全、生成编写 paramiko/requests 脚本
ChatGPT / Claude代码生成、Debug学习 API 用法、排查错误
Cursor / WindsurfIDE 集成 AI重构批量管理脚本
Tabnine代码补全企业内网开发(本地运行)

典型使用场景

场景 1:AI 生成 paramiko 批量管理脚本

需求:批量检查 200 台服务器的磁盘使用率,超过 80% 发送告警。
传统耗时:2 小时 → AI 辅助:15 分钟

🧪 Prompt 模板:
“你是一个 Python 运维自动化专家。请帮我生成一个脚本,使用 paramiko 并发检查 200 台服务器的磁盘使用率(df -h),解析输出,如果使用率 ≥ 80% 记录告警,并生成报告。使用 concurrent.futures 控制并发数。”

场景 2:AI 辅助调试 requests 请求失败

问题:调用 API 返回 401 Unauthorized。
传统方式:查文档、对比代码、手动 curl 测试,耗时 30 分钟 → AI 辅助:5 分钟

🔍 典型 AI 诊断:
“你的 Authorization Header 格式错误,应为 Bearer <token> 而非 Token <token>。”

场景 3:AI 生成并发管理框架(带重试、超时、进度条)

需求:并发执行任务,支持超时、重试、失败回调和 tqdm 进度条。
传统耗时:半天 → AI 辅助:30 分钟

效率提升对比

总评:AI 辅助可将 Python 运维自动化开发效率提升 6–12 倍,但生成的代码仍需人工审查,特别是安全性和边界条件。

四、命令/代码实操:批量管理 100 台服务器

📜 batch_manager.py(完整脚本)

#!/usr/bin/env python3"""批量服务器管理工具功能:批量执行命令、上传/下载文件、并发控制、重试、生成报告"""import paramikoimport concurrent.futuresfrom datetime import datetimefrom tqdm import tqdmimport argparseimport sysMAX_WORKERS = 20TIMEOUT = 10COMMAND_TIMEOUT = 30MAX_RETRIES = 3def run_command(server, command, results):    for attempt in range(MAX_RETRIES):        client = paramiko.SSHClient()        client.set_missing_host_key_policy(paramiko.AutoAddPolicy())        try:            client.connect(server['host'], username=server['user'],                           password=server['password'], timeout=TIMEOUT)            stdin, stdout, stderr = client.exec_command(command, timeout=COMMAND_TIMEOUT)            results[server['host']] = {                'status': 'success',                'output': stdout.read().decode(),                'error': stderr.read().decode()            }            return        except Exception as e:            if attempt == MAX_RETRIES - 1:                results[server['host']] = {'status': 'failed', 'error': str(e)}        finally:            client.close()def batch_execute(servers, command):    results = {}    with concurrent.futures.ThreadPoolExecutor(max_workers=MAX_WORKERS) as executor:        futures = [executor.submit(run_command, server, command, results) for server in servers]        for _ in tqdm(concurrent.futures.as_completed(futures), total=len(servers), desc="执行进度"):            pass    # 生成报告f"batch_report_{datetime.now().strftime('%Y%m%d_%H%M%S')}.txt"    with open(report_file, 'w') as f:        for host, res in results.items():            f.write(f"{host}: {res['status']}\n")    print(f"报告已生成: {report_file}")    return resultsif __name__ == '__main__':    parser = argparse.ArgumentParser()    parser.add_argument('--command', '-c', required=True, help='要执行的命令')    parser.add_argument('--servers', '-s', required=True, help='服务器列表文件 (IP,user,password)')    args = parser.parse_args()    with open(args.servers) as f:        servers = [dict(zip(['host','user','password'], line.strip().split(','))) for line in f if line.strip()]    batch_execute(servers, args.command)

使用方法:

 # 准备 servers.txt192.168.1.100,root,pass123192.168.1.101,root,pass123# 执行python batch_manager.py -c "uptime-s servers.txt   

五、真实生产案例:批量修复 SSH 弱加密算法

🔒某互联网公司批量修复 SSH 配置(CVE-2025-XXXX)

📅 2025-11📊 服务器:200+ 台⏱ 修复耗时:15 分钟

🔴 需求背景

安全团队扫描发现所有服务器的 SSH 配置存在弱加密算法(3DES、Blowfish),需禁用并启用强加密算法(AES-256-GCM),重启 sshd 并验证。

🔧 方案设计

  • 传统方式:手动登录修改,预计 10 小时

  • 自动化方案:使用 paramiko + SFTP 分发模板,并发 20 线程,预计 15 分钟

📋 实现步骤

  1. 生成新的 sshd_config 模板(禁用弱算法)

  2. 编写 Python 脚本:备份原配置 → 上传新配置 → 语法检查 → 重启 sshd → 验证状态

  3. 并发执行,记录成功/失败清单

📊 量化结果

最终:198 台成功,2 台硬件故障手动处理,总耗时 15 分钟,完美达成 deadline。

六、避坑指南 · 8 条生产级经验

❌ SSH 连接超时
设置 timeout 并添加重试机制(指数退避),避免网络波动导致失败。

❌ 并发数过高系统崩溃
控制 max_workers(建议 10–50),并根据服务器配置调整,避免资源耗尽。

❌ 密码明文硬编码
使用环境变量、密钥认证或加密配置文件(权限 600),杜绝泄露风险。

❌ HTTP 请求未设超时
始终设置 timeout=(connect, read),防止请求永久阻塞。

❌ 未处理 HTTP 错误状态
调用 response.raise_for_status() 或显式检查状态码,避免错误数据污染逻辑。

❌ 多线程共享变量无锁
使用 threading.Lockqueue.Queue 保护共享资源,防止数据错乱。

❌ 忽略 SFTP 传输校验
上传后验证文件大小或 MD5,确保传输完整。

❌ 缺少审计日志
记录每次操作的时间、用户、主机、结果,便于事后追溯和合规。

七、总结与展望

本文系统讲解了 Python 运维自动化的三大支柱:paramiko(SSH 编程)、requests/httpx(HTTP 客户端)和 并发编程(多线程、线程池、异步 IO)。通过真实案例和避坑指南,读者可以快速上手,将手动操作转化为高效、可靠的自动化脚本。

展望 2026 年,运维自动化正朝着 智能化、云原生、可观测 方向演进:AI 将深度融入代码生成和故障诊断,异步框架(如 asyncio)和 HTTP/2 将进一步提升性能,GitOps 和 IaC 将成为标配。掌握 Python 批量管理技能,将使你在运维领域中具备核心竞争力。

- 完 -

感谢阅读!对您有帮助的话,点亮👍🏻❤️,关注公众号,转发给需要的朋友~ 原创转载请联系授权。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-08-21 23:09:45 HTTP/2.0 GET : https://f.mffb.com.cn/a/506950.html
  2. 运行时间 : 0.354520s [ 吞吐率:2.82req/s ] 内存消耗:4,495.99kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=e4c54b5459f3a7448023a1c304a4d313
  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.000980s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001434s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.002058s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.014594s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001550s ]
  6. SELECT * FROM `set` [ RunTime:0.002342s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001625s ]
  8. SELECT * FROM `article` WHERE `id` = 506950 LIMIT 1 [ RunTime:0.038915s ]
  9. UPDATE `article` SET `lasttime` = 1787324986 WHERE `id` = 506950 [ RunTime:0.030240s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.005876s ]
  11. SELECT * FROM `article` WHERE `id` < 506950 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.009002s ]
  12. SELECT * FROM `article` WHERE `id` > 506950 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.002094s ]
  13. SELECT * FROM `article` WHERE `id` < 506950 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.005489s ]
  14. SELECT * FROM `article` WHERE `id` < 506950 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.010548s ]
  15. SELECT * FROM `article` WHERE `id` < 506950 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.053634s ]
0.358354s