跳到内容
当前位置:首页>下载方法>MSWEP降水数据下载太慢?这篇文章帮你提速10倍

MSWEP降水数据下载太慢?这篇文章帮你提速10倍

  • 2026-09-25 09:59:56
MSWEP降水数据下载太慢?这篇文章帮你提速10倍

一、写在前面:为什么你的 MSWEP 下载这么慢?

MSWEP(Multi-Source Weighted-Ensemble Precipitation)是 GloH2O 团队发布的全球降水数据集,凭借卫星、再分析与雨量计的多源融合,0.1° 的空间分辨率,成为降水研究最常用的数据之一。V3 版本更是引入了机器学习算法,数据质量进一步提升。

MSWEP全球降水数据下载教程

但很多同学在下载时都会遇到同样的崩溃:官方指定用 rclone 从 Google Drive 下载,而 Past/3hourly 目录下有 13 万多个文件平铺存放,实测下载速度只有 4~5 个文件/分钟。按这个速度,下载一年的数据(2920 个文件)需要 10 个小时,全部 46 年数据要下一周!

笔者最近完整下载了 MSWEP V3 数据,把踩过的坑和最终的提速方案整理成这篇教程。照着做,一年数据 1 小时内下完,速度提升 10 倍。全程免费。

先看效果对比

方案

下载速度

下完一年(2920文件)耗时

备注

rclone 默认配置

约 4 个/分钟

约 12 小时

频繁 403 限流,每下载一个文件几乎都要吃一次 403、等 30 秒重试

本文方案:专属 OAuth + API 并行下载

约 40 个/分钟

约 1 小时

8 线程并行、断点续传、自动重试,全程稳定

二、方案总览:慢的根源在哪?

在动手之前,先搞清楚慢的原因,才能对症下药。慢的根源有两个:

根源 1:rclone 默认的客户端 ID 是"公交车"

rclone 安装后,默认使用 rclone 官方注册的 Google OAuth 客户端 ID。全世界所有 rclone 用户共享这同一个 ID 的配额,Google 对每个客户端 ID 有每分钟请求数(QPM)限制。高峰期配额被挤占,你的每个下载请求都会先吃一个 403 错误,等待 30 秒退避后重试才能成功——这就是"4 个/分钟"的由来。

解决办法:在 Google Cloud 免费注册一个自己的 OAuth 客户端 ID,配额独享。这是本文的核心提速手段。

根源 2:13 万个文件平铺,rclone 列目录就要半小时

MSWEP 的 Past/3hourly 目录把 46 年共 13.5 万个文件全部平铺在一个文件夹里。rclone 每次执行 copy 命令,都需要先向 Google Drive 查询目录列表,而 Drive 列目录有分页限制(每页 1000 条),实测列完这个目录需要 20~50 分钟,而且这一步同样消耗宝贵的配额。

解决办法:先用 rclone lsjson 一次性把所有文件的 ID 导出成清单,之后下载时直接按文件 ID 调用 Drive API,完全跳过列目录,还能多线程并行。

整体技术路线

步骤

做什么

耗时

第 1 步

申请 MSWEP 数据访问权限(邮件确认)

几分钟~几天

第 2 步

安装并配置 rclone,绑定 Google 账号

约 10 分钟

第 3 步

注册免费的专属 OAuth 客户端 ID

约 10 分钟

第 4 步

导出文件 ID 清单

约 30 分钟(挂机)

第 5 步

运行并行下载脚本

一年约 1 小时

三、配置OAuth并行下载

第 1 步:申请 MSWEP 数据访问权限

  • 打开官网 gloh2o.org/mswep,找到数据申请入口,填写申请表。

  • 申请用途填非商业科研用途(non-commercial research),附上姓名、单位、邮箱。

  • 等几天会收到确认邮件,里面有两个 Google Drive 链接:旧版 MSWEP V2.8 和新版 MSWEP V3.16(test)。

  • 用浏览器登录你打算下载用的 Google 账号,逐个点开邮件里的链接并接受共享。这一步不能省:共享是精确绑定到邮箱的,哪个账号点开接受了链接,哪个账号才能下载数据。

重要提醒:邮件里会说明 NRT 近实时数据中 10 天以内的文件会被渐进升级(新数据源到达后重新计算),建议等文件"老化"超过 10 天后再下载,或之后重新下载这些文件,以保证精度。

第 2 步:安装配置 rclone

2.1 安装

Windows 用户到 rclone.org/downloads 下载压缩包,解压后把 rclone.exe 放到任意目录,并把该目录加入系统 PATH 环境变量。macOS / Linux 用户用包管理器安装即可(如 brew install rclone 或 apt install rclone)。

2.2 配置 Google Drive 远程

在终端运行:

rclone config

按提示依次选择:

  • n) New remote —— 新建远程

  • 名称:输入 gdrive(名字随意,后文以此为准)

  • 存储类型:输入 drive(Google Drive)

  • client_id / client_secret:先直接回车跳过(第 3 步会回来改)

  • scope:选 1(完全访问)

  • 其余选项一路回车,最后问是否用高级配置选 n,问是否自动打开浏览器授权选 y

浏览器会弹出 Google 授权页面,登录你第 1 步接受共享用的那个 Google 账号,点"允许"。回到终端看到 "Login Ok" 即配置成功。

2.3 验证能否看到共享文件夹

运行以下命令,列出"与我共享"的文件夹:

rclone lsd gdrive: --drive-shared-with-me

能看到 GloH2O 共享的文件夹名(如 MSWEP_V316_test、3hourly 等)就说明权限通了。

常见坑:如果看不到,99% 是浏览器里接受共享的账号和 rclone 授权的账号不是同一个。可以运行 rclone config dump 查看配置,或者用 rclone authorize 单独测试授权账号。

第 3 步:注册免费的专属 OAuth 客户端 ID(核心提速步骤)

这一步全程免费,不需要绑定信用卡,10 分钟搞定,是一劳永逸的投入。

3.1 创建 Google Cloud 项目

  • 浏览器登录你的 Google 账号,打开 console.cloud.google.com/projectcreate

  • 项目名称随意(如 mswep),点"创建"

3.2 启用 Google Drive API

  • 打开 console.cloud.google.com/apis/library/drive.googleapis.com

  • 确认左上角项目选择器选的是刚建的项目,点"启用"

3.3 配置 OAuth 同意屏幕

  • 左侧菜单进入"API 和服务 → OAuth 同意屏幕"(新版界面叫 Google Auth Platform)

  • 用户类型选"外部(External)",点创建

  • 应用名称随便填(如 mswep),用户支持邮箱选自己,保存

  • 应用首页/隐私政策/服务条款链接:填任意有效网址(如 example.com)。注意:如果填 example.com 后发布应用时提示"缺少的网域",不用纠结——直接跳过"发布应用",用测试模式即可,速度提升效果完全一样

  • 进入"受众群体(Audience)"页面,在"测试用户"里添加自己的邮箱为测试用户

  • 测试模式的唯一代价:授权令牌每 7 天过期一次,到期后重新点一次"允许"即可,一年也就多点几次鼠标。

3.4 创建 OAuth 客户端 ID

  • 左侧"凭据 → 创建凭据 → OAuth 客户端 ID"

  • 应用类型选择"桌面应用(Desktop app)"

  • 名称随意,点"创建"

  • 弹窗中复制"客户端 ID"(形如 123456789-xxxxx.apps.googleusercontent.com)和"客户端密钥"(形如 GOCSPX-xxxxx),妥善保存

5.5 把客户端 ID 填进 rclone

编辑 rclone 配置文件(Windows 在 C:\Users\你的用户名\AppData\Roaming\rclone\rclone.conf),在你的远程配置段落中加入两行:

[gdrive]          type = drive          client_id = 你的客户端ID.apps.googleusercontent.com          client_secret = 你的客户端密钥          scope = drive          token = {...}

然后重新授权一次(让新客户端 ID 生效):

rclone config reconnect gdrive:

浏览器再次弹出授权页面,点"允许"。如果出现"Google 尚未验证此应用"警告,属正常(自用测试模式),点"继续"即可。

至此,你的配额就独享了,限流大幅缓解。但列目录慢的问题还在,继续第 4 步。

第 4 步:导出文件 ID 清单

用 lsjson 把共享文件夹里的所有文件信息(文件名、ID、大小)一次性导出。以 V3.16 的 Past/3hourly 为例,先找到文件夹 ID:

rclone lsjson gdrive: --drive-shared-with-me

输出中找到 Past/3hourly 文件夹对应的 ID,然后导出清单:

rclone lsjson "gdrive:" --drive-root-folder-id 文件夹ID --drive-shared-with-me -v > file_list.json

13.5 万个文件列完约需 20~30 分钟(Drive 分页限制,每页 1000 条),挂机等待即可。这一步只需做一次,产出 file_list.json 约 25MB,包含每个文件的名称、ID 和字节数。

小技巧:清单里顺手统计一下各年份的文件数,方便后面规划下载。V3 命名规则和 V2 一致,为 YYYYDDD.HH.nc(年.天.时),一天 8 个文件,一年约 2920 个。

第 5 步:并行下载脚本(附完整代码)

原理:读取文件清单,按文件 ID 直接调用 Drive API 的 download 接口,8 线程并行,带 403 自动退避重试、access token 自动刷新、断点续传(已下载的文件自动跳过)、大小校验。

完整代码如下,保存为 download_mswep.py,按需修改开头的配置区即可直接运行:

# -*- coding: utf-8 -*-          """          MSWEP V3 批量并行下载脚本          用法: python download_mswep.py <年份> [线程数]          依赖: 无第三方依赖(仅标准库)          """          import json, os, re, sys, time, threading, urllib.request, urllib.error          from concurrent.futures import ThreadPoolExecutor, as_completed          # ================= 配置区 =================          RCLONE_CONF = r"C:\Users\你\AppData\Roaming\rclone\rclone.conf"# rclone配置          REMOTE_NAME = "gdrive"# rclone远程名          FILE_LIST= r"D:\data\file_list.json"# 第4步导出的清单          OUT_BASE= r"D:\data\mswep"# 下载输出目录          # =========================================          _token_lock = threading.Lock()          _token = {"value": None, "ts": 0}          def load_token():          """从 rclone 配置读取 access token(含过期则刷新的说明见文末)"""          with open(RCLONE_CONF, encoding="utf-8") as f:          content = f.read()          m = re.search(r"\[" + REMOTE_NAME + r"\].*?token = (\{.*?\})", content, re.S)          return json.loads(m.group(1))          def refresh_token():          """用 refresh_token 换新的 access_token(OAuth 标准流程)"""          t = load_token()          data = urllib.parse.urlencode({          "client_id": CLIENT_ID, "client_secret": CLIENT_SECRET,          "refresh_token": t["refresh_token"], "grant_type": "refresh_token",          }).encode()          req = urllib.request.Request("https://oauth2.googleapis.com/token", data=data)          resp = json.loads(urllib.request.urlopen(req, timeout=60).read())          t["access_token"] = resp["access_token"]          return t["access_token"]          def get_token(force=False):          with _token_lock:          if not force and _token["value"] and time.time() - _token["ts"] < 1500:          return _token["value"]          tok = refresh_token()          _token.update(value=tok, ts=time.time())          return tok          def download_one(fid, dest, expect_size, max_retry=5):          for attempt in range(1, max_retry + 1):          try:          token = get_token(force=(attempt > 1))          url = f"https://www.googleapis.com/drive/v3/files/{fid}?alt=media"          req = urllib.request.Request(url, headers={"Authorization": f"Bearer {token}"})          with urllib.request.urlopen(req, timeout=300) as resp, open(dest, "wb") as f:          while True:          chunk = resp.read(1024 * 1024)          if not chunk: break          f.write(chunk)          if expect_size and os.path.getsize(dest) != expect_size:          raise IOError("size mismatch")          return True          except Exception as e:          if attempt == max_retry:          print(f"FAILED {os.path.basename(dest)}: {e}", flush=True)          return False          time.sleep(15 * attempt)# 退避:15s/30s/45s...          def main():          year, workers = sys.argv[1], int(sys.argv[2]) if len(sys.argv) > 2 else 8          outdir = os.path.join(OUT_BASE, year)          os.makedirs(outdir, exist_ok=True)          with open(FILE_LIST, encoding="utf-8") as f:          items = json.load(f)          tasks = [(x["Name"], x["ID"], x.get("Size", 0)) for x in items          if x["Name"].startswith(year) and x["Name"].endswith(".nc")]          done = {n for n in os.listdir(outdir) if n.endswith(".nc")}          todo = [t for t in tasks if t[0] not in done]# 断点续传:跳过已有文件          print(f"{year}: 共{len(tasks)}个, 已有{len(done)}, 待下载{len(todo)}", flush=True)          t0, ok = time.time(), 0          with ThreadPoolExecutor(max_workers=workers) as pool:          futs = {pool.submit(download_one, fid, os.path.join(outdir, name), size): name          for name, fid, size in todo}          for fut in as_completed(futs):          if fut.result():          ok += 1          if ok % 50 == 0:          rate = ok / (time.time() - t0) * 60          print(f"进度 {ok}/{len(todo)}速率 {rate:.0f} 个/分钟", flush=True)          print(f"完成: {ok}/{len(todo)} 成功", flush=True)          if __name__ == "__main__":          main()

运行:

python download_mswep.py 2023 8

实测速度约 40 个文件/分钟,一年 2920 个文件(约 7GB)1 小时左右下完,且全程稳定、零失败。

提示:脚本里 CLIENT_ID/CLIENT_SECRET 填第 3 步注册时拿到的值。如果不想在脚本里做令牌刷新,也可以每 50 分钟手动跑一次 rclone config reconnect gdrive: 让 rclone 帮你刷新令牌。

四、避坑指南:笔者踩过的所有坑

坑

现象

解决办法

共享账号不匹配

rclone 看不到共享文件夹

接受共享的账号必须和 rclone 授权的账号完全一致

默认客户端 ID 限流

每下载一个文件吃一次 403,4~5 个/分钟

注册专属 OAuth 客户端 ID(本文第 3 步)

平铺目录列不动

rclone copy 开始前卡住 20~50 分钟

lsjson 一次性导出 ID 清单,API 按 ID 下载

OAuth 测试模式

"Google 尚未验证此应用"警告;令牌 7 天过期

点"继续"即可;到期重新授权一次

发布应用需验证域名

Publish App 提示缺少网域

不用管,测试模式即可

断网/中断

下载进程被杀

脚本断点续传,重跑自动跳过已有文件

大小校验失败

极少数文件下载不完整

脚本自动重试并校验字节数

五、附:大体量数据的管理建议

如果是逐年的批量下载,推荐"中转站"工作流,避免本地磁盘被吃满:

对每一年 YYYY:          1. python download_mswep.py YYYY 8# 下载到本地中转目录          2. 校验文件数量和总大小          3. scp -r 上传到服务器          4. 确认服务器端数量一致后删除本地          5. 下一年

  • 下载、校验、上传、删除一步一确认,任何环节出问题都能重跑补齐

  • 中转盘只需容纳一年的量(V3 一年约 7GB),普通硬盘绰绰有余

  • 重要数据至少保留两份(服务器 + 备份盘),RAID 不是备份

六、结语

总结一下提速的三个关键动作:

① 申请权限时,确保接受共享的 Google 账号和 rclone 绑定的一致

② 注册免费的专属 OAuth 客户端 ID,摆脱全球共享配额(4 → 40 个/分钟)

③ 导出文件 ID 清单,用 Drive API 多线程直连下载,跳过列目录

这套思路不仅适用于 MSWEP,任何托管在 Google Drive 上的大规模科研数据(如 GloH2O 的其他产品、各种共享数据集)都可以照搬。

推文太长?不想看?没关系。

直接把这篇推文复制、粘贴给 AI Agent,它就能替你执行后续的所有任务——安装配置、申请授权、注册客户端、批量下载,一条龙搞定。

这时候,你只需要打开抖音刷刷视频,或者干脆出门走走,看看月亮。毕竟中秋一年只有一次,而数据,让 AI 替你下就好。

参考文献

Wang, X., Alharbi, R. S., Baez-Villanueva, O. M., Miralles, D. G., Ma, J., Xu, S., McCabe, M. F., Pappenberger, F., van Dijk, A. I. J. M., McVicar, T. R., Karthikeyan, L., Fowler, H. J., Pan, M., Gebrechorkos, S. H., and Beck, H. E. (2026). MSWEP V3: Machine learning-powered global precipitation estimates at 0.1° hourly resolution (1979–present). arXiv preprint arXiv:2602.01436:, doi:10.48550/arXiv.2602.01436.

觉得有用的话,点赞、在看、转发给正在被下载速度折磨的同学吧!有问题欢迎留言讨论。

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