当前位置:首页>python>一个把 Python 从服务器扩展到浏览器的神器 -- Pyodide

一个把 Python 从服务器扩展到浏览器的神器 -- Pyodide

  • 2026-06-29 06:02:54
一个把 Python 从服务器扩展到浏览器的神器 -- Pyodide
  • PyPI 现在接受一种叫 pyemscripten的 wheel tag——Python 包的浏览器目标平台,和 Linux wheel 同级。
  • Simon Willison 用 cibuildwheel 一行 YAML,把 C++ 代码编译成 WASM wheel 传上 PyPI,浏览器里 `import` 直接跑。
  • 判断一个"X 语言进 Y 平台"是不是真范式转移,看三信号:协议标准化 + 工具零门槛 + 关键包入局。全亮才是真的。

Simon Willison 在 6 月 13 号发了一篇博客,标题平淡无奇:《Publishing WASM wheels to PyPI for use with Pyodide》。但他做的事一点不平淡——他把一个叫 Luau 的 C++ 脚本语言编译成了 WASM wheel,传到 PyPI 上,然后在浏览器里用 import luau_wasm 跑了段斐波那契。

整个流程他花了一个下午。

重点不是"Python 能在浏览器跑了"——这件事 2018 年 Pyodide 项目刚启动时就能了。重点是他怎么做到的:没有找 Pyodide 团队帮忙,没有用任何私有索引,没有绕任何弯。就是写代码、配 CI、twine upload。和发一个 Linux wheel 没区别。

这才是 Pyodide 314.0 真正改变的东西。

01一个 Wheel,四张面单

要理解这个变化有多大,先得理解之前有多别扭。

Python 的二进制包分发有一套成熟机制:包维护者把 C/Rust 扩展编译成 .whl 文件,文件名里嵌一个平台 tag——manylinux_2_17_x86_64 表示给 64 位 Linux 用的,win_amd64 给 Windows。PyPI 收到上传后,pip install 的时候根据你的系统选对应的 wheel。这套机制从 PEP 427(2012 年)到现在跑了 14 年,撑起了整个 Python 生态。

但在 PEP 783 之前,WASM 不属于这个体系。

Pyodide 团队手工维护了 300 多个包的独立索引,放在 anaconda.org/pyodide。每个有 C 扩展的包——numpy、scipy、pydantic-core——都要他们手动交叉编译一遍。包维护者自己不用管浏览器这个 target,也管不了——PyPI 根本不接受 WASM 平台的 wheel。上传就报错。

这就是持续了 6 年的中央化瓶颈:包的原始作者最了解自己的代码,却不能自己发布浏览器版本。Pyodide 团队成了 gatekeeper——不是因为他们想当,是因为基建没跟上。

PEP 783 在 2026 年 4 月 6 号正式被 Python 治理委员会接受,然后事情开始加速。这份 PEP 只做了一件事:定义一个新平台 tag——pyemscripten_{YEAR}_{PATCH}_wasm32。看起来就是几个词加下划线,但它是 Python 生态第 14 个被正式承认的 wheel 平台。和 manylinuxwin_amd64macosx_11_0_arm64 同级。

4 月 21 日,PyPI 合并了 warehouse PR #19804,上传通道打开。6 月 7 日,cibuildwheel v4.0 发布,一行 YAML 构建 WASM wheel。6 月 9 日,Pyodide 314.0 发布,版本号从 0.29 直接跳到 314.0——对齐的是 CPython 3.14 的版本号。一个在 0.x 阶段待了 8 年的项目,突然把自己标到了 300+。

这不是突然发生的。这是 7 年基建的收束。但在 2026 年 6 月这两周,所有拼图同时到位了。

02Simon 的一下午

回到 Simon 的实验。他选了一个巧妙的 demo 对象:Luau。这是 Roblox 开发的一门脚本语言,从 Lua 5.1 fork 出来,加了渐进类型系统和性能优化。用 C++ 写的。Simon 想把它打包成一个可以在浏览器里 import 的 Python 模块。

构建流程比你想象的要简单。核心就三步:

第一步:编译 Luau C++ 源码到 WASM。 用 Emscripten 编译器,target 设成 wasm32-unknown-emscripten。这和编译到 ARM 或 x86 的逻辑一样,只是目标指令集不同。

第二步:打包成 wheel。 cibuildwheel 自动检测平台 tag,生成这样的文件名:

luau_wasm-0.1a0-cp314-cp314-pyemscripten_2026_0_wasm32.whl

拆开看:cp314 = CPython 3.14,pyemscripten_2026_0 = Emscripten 2026 年第 0 版 ABI,wasm32 = 32 位 WASM 架构。271.6 KB。对,一个完整的脚本语言运行时,不到 300 KB。

第三步:twine upload,完。 剩下的步骤和发任何 Python 包一样。

然后 Simon 打开 Pyodide 的在线 REPL,敲了这几行:

import micropipawait micropip.install("luau-wasm")import luau_wasmprint(luau_wasm.execute('''local animals = {"fox", "owl", "frog", "rabbit"}table.sort(animals, function(a, b) return #a < #b end)for i, name in animals do print(i .. ". " .. name .. " (" .. #name .. ")") end'''))

输出:按名字长度排好序的四只动物。6 毫秒跑完。在一个浏览器 tab 里。

他还部署了一个 GitHub Pages demo,打开就能玩:左边代码编辑器,右边输出面板,Hello World、斐波那契、运行时错误测试——几个预设按钮,simonw.github.io/luau-wasm。不用装任何东西。

这就是效果先行。不是 PPT 上的架构图,是一个能点能跑的东西。

L3 Expert Zone(可跳过):如果你维护的是 Rust 扩展

Pydantic 团队发了一篇详细的构建指南。核心配置:

uses: pypa/cibuildwheel@v4env:CIBW_BUILD: "cp314-pyodide_wasm32"

如果是 Rust 写的扩展(通过 PyO3/maturin),需要额外设一个环境变量:

export MATURIN_PYEMSCRIPTEN_PLATFORM_VERSION=2026_0

然后 maturin 会自动选 wasm32-unknown-emscripten target。Rust 1.93.0 以上不需要 nightly——这是另一个"不是玩具"的信号。一个需要 nightly Rust 的平台是实验性的;一个 stable Rust 能直接编译的平台是生产级的。

Pydantic 的 pydantic_core(Rust 写的校验核心)v2.47.0 已经作为 pyemscripten wheel 在 PyPI 上了。你可以自己去验证:打开 pypi.org/project/pydantic_core/#files,翻到最下面,能看到 cp314-cp314-pyemscripten_2026_0_wasm32.whl。和它的 118 个兄弟 wheel 排在一起——Linux 的、macOS 的、Windows 的,现在加了一个浏览器的。

03谁已经在船上,以及怎么上船

Simon 用 BigQuery 扫了 PyPI 的公开数据集。截止 6 月中旬,已经发布 pyemscripten_202*_wasm32 wheel 的包有这些:

pydantic_coreonnximgui-bundletypstuuid7-rsyaml-rstoml-rscmm-16bitcadquery-ocparro3-* 系列……

不是几百个,但种类很有意思。有数据校验核心(pydantic_core),有 ONNX 运行时,有 GUI 框架(imgui-bundle),有排版引擎(typst),有各种 Rust 写的序列化库。这些不是"尝鲜"型的玩具包——每一个都有人在生产环境中依赖它们。

包维护者的决策逻辑其实很简单:成本 vs 覆盖。加一个 WASM target 的成本是多少?一行 CIBW_BUILD。CI 多跑 2-3 分钟。多了几百 KB 的 wheel 文件。覆盖的是什么?一个全新的平台——所有能用浏览器的设备。

这个成本/收益比,随着 cibuildwheel v4.0 的发布,已经偏到了让大多数维护者选择"加"的那一边。

但不是所有包都适合。

04浏览器里的 Python 能做的事

Pyodide 不是服务器 Python 的替代品。把它当替代品用,你会失望。把它当浏览器里的 Python用,它很强。

它擅长三件事:

  1. 零安装教学环境。 学生打开一个 URL,就能在一个完整 Python 环境里写代码、跑结果。JupyterLite 和 marimo 已经在用 Pyodide 服务数十万用户。没有环境配置、没有 IT 审批、没有"老师我的 pip install 报错了"。
  2. 数据不出浏览器的本地分析。 Stanford 研究员和 NASA 科学家已经在 marimo(基于 Pyodide)上发布可交互 notebook——数据留在用户本地,不上传云端。GDPR 零表面积。对医疗、金融、政府数据场景,这不是 nice-to-have,这是合规前提。
  3. 交互式文档。 你在读一个 Python 库的文档,旁边就是一个能直接跑代码的 REPL。不是截图,是真的能 import、能报错、能出结果的 Python 环境。这对降低库的试用门槛是降维打击。

它做不了三件事:

  1. 多线程和 multiprocessing。 浏览器的安全模型从根本上不允许共享内存多线程。SharedArrayBuffer 需要特殊的 HTTP header(COOP/COEP),而且不提供 pthread。如果你的包依赖 threading 或 multiprocessing——WASM wheel 不是你的战场。
  2. 随意访问网络。requests.get("https://任意网址") 在浏览器里撞上 CORS 墙。Pyodide 提供 pyodide.http 包装了浏览器的 fetch() API,但它不是 requests 的直接替换。服务器端得配 CORS header 才行。Node.js 下有实验性 socket 支持(pyodide.useNodeSockFS()),但浏览器端无解。
  3. 轻量快速启动。 Pyodide 核心运行时 6.4 MB。科学计算栈几十 MB。首载 2-5 秒没有 Service Worker 缓存。不是大问题——浏览器会缓存——但"秒开"是不现实的。

一句话:把它想象成露营炉,别想象成中央厨房。野外能炒一桌菜,但不是把家里六眼灶搬过去。

05从"Python 能在浏览器跑"到"浏览器是一等平台"

2018 年,Pyodide 项目刚启动时的叙事是:"你看,CPython 能在浏览器里跑!"这个叙事在 2026 年 6 月已经过时了。现在的叙事是:"pip install 的第四个平台,叫浏览器。"

判断一个基础设施变化是不是"范式级别",我有三个简单信号:

  1. 协议标准化了吗? PEP 783 不是某个公司的产品更新——是 Python 治理流程产出的正式标准。这意味着它不会因为某个团队撤资而消失。平台 tag 一旦进入 pypa/packaging,就是 Python 语言基础设施的一部分。
  2. 工具链降到零门槛了吗? cibuildwheel v4.0 做到了。一行 YAML,不多不少。不需要理解 Emscripten 版本号、不需要手写 WASM 编译参数、不需要学新 CLI。这个门槛对包维护者的采纳速度是决定性的——从"我需要学新东西"变成"加一行配置,CI 多跑 3 分钟",决策性质完全不同。
  3. 有"不可能回头"的关键包入局了吗? Pydantic 是第一个。不是某个独立开发者的周末项目,是一个被 FastAPI、LangChain、LlamaIndex 等半个 AI 生态依赖的数据校验核心。它入局意味着 WASM wheel 经过了生产级 Rust 扩展的编译链验证。numpy、scipy、polars 已经在路上。

三个信号同时亮绿灯。这不是巧合——cibuildwheel 在 6 月 7 日发布、Pyodide 314.0 在 6 月 9 日发布、Simon 在 6 月 13 日发博客,不是因为他们约好了。是因为 PEP 783 在 4 月 6 日通过后,每个团队都在等对方先动,然后一瞬间全动了。

2009 年,Node.js 让 JavaScript 从浏览器扩展到了服务器。当时也有人说"JS 在服务器端跑?玩具吧。"15 年后,没有人质疑 JS 是服务器端一等语言。

Pyodide 314.0 是同一个硬币的另一面。Python 从服务器扩展到浏览器。同样的怀疑——"Python 在浏览器里跑?玩具吧。"同样的答案——不是玩具,是 infrastructure。

06你现在能做的三件事

  1. 打开你维护的包的 CI 配置。

在 .github/workflows 里找到 cibuildwheel 的 job,加一行:

CIBW_BUILD: "cp314-pyodide_wasm32"

推上去,看 CI 能不能绿。如果绿了——你的包就有了第四个平台。

  1. 打开 "https://pyodide.org/en/stable/console.html",在 REPL 里敲:
import micropipawait micropip.install("你常用的包名")

看它能不能装上。能装上 = 包的维护者已经替你做了第 1 步。

  1. 如果前面两步都不适用——记住这三信号判断框架。

下次有人告诉你"X 语言能进 Y 平台了",不要问"能跑吗"(答案永远是能)。问这三个问题:协议标准化了吗?工具链降到零门槛了吗?有不可能回头的关键包入局了吗?三个全是 yes,才是范式转移。缺一个,只是 demo。


07📋 发布元数据

生成时间:2026-06-14 · 由 Hook Master + Title Judge 提供

✅ 最终标题

pip install 的第四个平台,叫浏览器

作者:一个把 Python 从服务器扩展到浏览器的神器 -- Pyodide

备选标题

  1. Python 进浏览器的最后一块拼图,不是技术,是分发
  2. 你的 Python 包多了一个 target,叫 wasm32

TL;DR(已注入正文开头)

  • PyPI 现在接受一种叫 pyemscripten 的 wheel tag——Python 包的浏览器目标平台,和 Linux wheel 同级。
  • Simon Willison 用 cibuildwheel 一行 YAML,把 C++ 代码编译成 WASM wheel 传上 PyPI,浏览器里 import 直接跑。
  • 判断一个"X 语言进 Y 平台"是不是真范式转移,看三信号:协议标准化 + 工具零门槛 + 关键包入局。全亮才是真的。

核心摘要(≤120 字)

Python 分发的边界不再是 CPU 架构——Pyodide 314.0 将 WASM 变成了 PyPI 上的一等 wheel 目标平台。这不是"Python 能在浏览器跑"的老故事,而是 pip install 机制本身的一次静默升级:PEP 783 标准化平台 tag,cibuildwheel v4.0 把门槛降到一行 YAML,Pydantic 等关键包已入局。本文从 Simon Willison 的可复现实操切入,给出一个三信号判断框架供读者迁移复用。

小红书引流文案

家人们,Python 生态发生了一件大事但没人咋呼 📢

pip install 现在有第四个平台了——叫浏览器。不是以前那种"Python 转 JS"的老方案,是正儿八经的 CPython 3.14 编译成 WebAssembly,wheel 直接传 PyPI,浏览器里 import micropip; await micropip.install("包名") 就能用。

Simon Willison(那个 Django 创始人)花一个下午就把他写的 C++ 项目打包成 WASM wheel 传上去了。271 KB。6 毫秒跑完斐波那契。

Pydantic 已经在发了。这意味着什么?以后你在浏览器里跑 Python 不会再有"对不起,这个库不支持"——只要维护者加一行 CI 配置。

我写了篇 3000 字把这事掰开讲清楚了 👆 从 PEP 783 到 cibuildwheel 到 Pyodide 314.0,到谁已经在船上、谁不该上船。诚实画了边界——三件事能做,三件事做不了。

标签:#Python #Pyodide #WebAssembly #pip #开源 #技术趋势 #浏览器编程

即刻引流文案

Python 生态一个被低估的大变化:Pyodide 314.0。

不是"Python 能在浏览器跑了"(那个 2018 年就能了),是 PyPI 现在接受 WASM 平台的 wheel 了。和 Linux/macOS/Windows wheel 同级——同一个 twine upload。

Simon Willison 前天写博客验证了全流程:C++ → Emscripten → WASM wheel → PyPI → 浏览器 import,一个下午跑通。Pydantic 已经在生产级发 emscripten wheel 了。

这不是玩具信号。cibuildwheel v4.0 把门槛压到了一行 YAML。

我写了个判断框架:协议标准化 × 工具零门槛 × 关键包入局 = 范式转移。缺一个就是 demo。

SEO 关键词

  • 主关键词:Pyodide 314.0 WASM wheel PyPI
  • 长尾词:Python 浏览器 运行、pip install WebAssembly、pyemscripten wheel 构建、Pyodide vs Brython、cibuildwheel WASM target、Python 包 浏览器 target、PEP 783 中文 解读

视觉资产

  • fig1 时间线图articles/pending/visuals/2026-06-14-pyodide-3140-wasm/fig1-timeline.md(Pyodide 7 年基建收束,5 个关键拐点)
  • fig2 流程图articles/pending/visuals/2026-06-14-pyodide-3140-wasm/fig2-flowchart.md(WASM wheel 完整构建管线)
  • fig3 四象限图articles/pending/visuals/2026-06-14-pyodide-3140-wasm/fig3-quadrant.md(浏览器 Python 方案竞争定位)
  • fig4 外部截图articles/pending/visuals/2026-06-14-pyodide-3140-wasm/配图说明.md(5 张手动截图优先级清单)

标签:#Python#Pyodide#WASM

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-03 08:11:51 HTTP/2.0 GET : https://f.mffb.com.cn/a/501350.html
  2. 运行时间 : 0.178669s [ 吞吐率:5.60req/s ] 内存消耗:4,744.02kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=d7340f7a64cfbbb59bbc494613ceb48a
  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.001116s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001707s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000763s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000715s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001267s ]
  6. SELECT * FROM `set` [ RunTime:0.000619s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001420s ]
  8. SELECT * FROM `article` WHERE `id` = 501350 LIMIT 1 [ RunTime:0.008771s ]
  9. UPDATE `article` SET `lasttime` = 1783037511 WHERE `id` = 501350 [ RunTime:0.002725s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000327s ]
  11. SELECT * FROM `article` WHERE `id` < 501350 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000488s ]
  12. SELECT * FROM `article` WHERE `id` > 501350 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.002521s ]
  13. SELECT * FROM `article` WHERE `id` < 501350 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.005913s ]
  14. SELECT * FROM `article` WHERE `id` < 501350 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001251s ]
  15. SELECT * FROM `article` WHERE `id` < 501350 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.000939s ]
0.180363s