当前位置:首页>课件>从 PPT 互动课件到 HTML5:一份技术拆解与自建方案指南

从 PPT 互动课件到 HTML5:一份技术拆解与自建方案指南

  • 2026-07-24 19:48:52
从 PPT 互动课件到 HTML5:一份技术拆解与自建方案指南
当你想把一份带路径动画、点击触发器、蒙版遮罩的 PPT 互动课件转成网页或小程序时,你面对的其实不是"格式转换",而是渲染引擎的逆向工程

一、先打破认知:PPT 不是一个"文件"

Office 2007 之后,.pptx 本质上是一个 ZIP 压缩包,只是换了个扩展名骗过操作系统。把它重命名为 .zip 解压后,你会看到一张标准的"建筑图纸":

课件.pptx(ZIP 包)├── ppt/slides/slide1.xml      ← 幻灯片内容、形状、位置├── ppt/media/image1.png       ← 引用的图片、音频├── ppt/theme/theme1.xml       ← 配色与字体方案└── _rels/                     ← 关系映射(谁引用了谁)

这套图纸的语言叫做 OOXML(Office Open XML,ISO/IEC 29500),是微软公开的文档规范。但注意:"公开标准"不等于"开源实现"。标准告诉你 XML 该怎么写,但没告诉你 Office 内部是怎么渲染它的。


二、PPT 动画的"源代码"长什么样

PPT 的动画不是二进制黑箱,而是明码标价的 XML。以一段路径动画为例:

xml
<p:animMotion origin="layout"path="M 0 0 L 0 0.25 E"><p:cBhvr><p:cTn id="6"dur="2000"fill="hold" /><p:tgtEl><p:spTgt spid="2" />        ← 目标:第 2 号形状</p:tgtEl></p:cBhvr></p:animMotion>

核心标签对照表:

XML 标签
含义
前端映射
&lt;p:animMotion&gt;
路径动画
GSAP MotionPath
path=&quot;M 0 0 L 0 0.25 E&quot;
运动轨迹(标准 SVG 语法)
直接喂给 SVG/GSAP
dur=&quot;2000&quot;
时长 2000ms
duration: 2
spid=&quot;2&quot;
目标形状 ID
DOM 元素 ID
&lt;p:cond evt=&quot;onClick&quot;&gt;
点击触发器
addEventListener('click')
&lt;p:seq&gt;
 / &lt;p:par&gt;
串行 / 并行时序
GSAP Timeline

关键洞察:PPT 的路径动画数据本身就是 SVG 路径字符串。这意味着如果你能从 XML 里提取出这段字符串,理论上可以直接交给前端动画引擎播放。


三、商业工具(如 iSpring)是怎么做到的

iSpring、ActivePresenter 这类工具的核心工作流是三层架构:

PPT 文件 (ZIP + OOXML)    ↓ ① 解析层中间表示层(JSON/AST:形状、位置、动画、触发器)    ↓ ② 映射层HTML5 渲染(CSS + SVG + JS 事件 + 动画引擎)
  • 路径动画 → 提取 SVG path → 映射为 GSAP MotionPath 或 CSS @keyframes
  • 点击触发器 → 解析 &lt;p:cond evt=&quot;onClick&quot;&gt; + &lt;p:spTgt&gt; → 生成 JS 事件绑定
  • 蒙版/遮罩 → 转为 CSS clip-path 或 SVG &lt;mask&gt;,利用 GPU 加速
  • 时序编排 → 整页动画转为一个 GSAP Timeline 实例,控制播放/暂停/跳转

它们还包含一个轻量运行时(约 50-200KB),负责幻灯片状态管理和事件总线。


四、OOXML 标准能帮你到哪里?

很多人误以为"有了标准就能完美逆向"。这是一个关键误区。

标准能给你的

  • XML 节点结构(知道动画"有什么")
  • 属性枚举(知道 presetClass=&quot;path&quot; 表示路径动画)
  • 数据格式(知道 path 是 SVG 语法)

标准不能给你的(也是 WPS 花了 20 年才"基本兼容"的原因):

  • 插值算法:accel=&quot;50000&quot; 到底用哪种贝塞尔曲线加速?公式是什么?
  • 触发器优先级:多个触发器同时满足时,执行顺序和打断逻辑?
  • 渲染黑盒:文字在动画中是否实时重排?半透明蒙版的混合算法?
  • 版本漂移:Office 2007/2016/365 对同一标签的实际行为有差异

类比:OOXML 标准就像 JavaScript 的 ECMA-262 规范——它定义了语法,但 V8 引擎怎么实现 Array.sort() 是谷歌的秘密。WPS 的 20 年兼容工作,本质上是在逆向 V8,而不是读规范。


五、LibreOffice:开源世界能借鉴什么

LibreOffice 是完全开源的,它的 PPTX 导入/导出过滤器在以下路径公开:

模块
路径
价值
PPTX 导入
oox/source/ppt/
看怎么遍历 &lt;p:timing&gt; 提取动画属性
PPTX 导出
sd/source/filter/eppt/
看内部动画对象如何序列化为 OOXML
UNO API
com.sun.star.presentation
程序化读取动画树结构

LibreOffice 能较好支持的动画

  • 标准进入/退出/强调动画(淡入、飞入、擦除、缩放)
  • 基础路径动画(直线、曲线运动)
  • 简单点击触发器和时序控制

LibreOffice 不支持或降级的

  • Morph 平滑切换(转为静态占位符)
  • 3D 旋转/三维动画
  • 复杂多条件触发器、VBA 联动
  • 精确插值曲线(行为可能与 Office 有差异)

关键结论:LibreOffice 提供的是&quot;映射&quot;(把 PPT XML 翻译成自己的内部模型播放),而不是&quot;仿真&quot;(像素级复现 Office 行为)。你可以借鉴它的 XML 解析框架和动画分类映射表,但不能直接拿它的代码生成 HTML5——它的渲染目标是自己的 Impress 引擎,不是浏览器。


六、WPS 的兼容哲学:我们能学到什么

WPS 在 2005 年彻底重写架构,直接按 OOXML 标准设计文档内核。它的兼容策略可以概括为:

  1. 格式双轨:同时支持自己的 UOF 格式和 OOXML,遇到冲突时做降级映射
  2. 约束渲染:遇到不支持的特效(如某些 3D 变换),用近似效果兜底
  3. 字体兜底:找不到原字体时,按"衬线/非衬线/等宽"分类替换
  4. 云端解析:手机端不直接解析复杂文档,服务器转完再下发

对你的启示:不要试图"通用兼容",而是走&quot;约束输入 + 精准解析&quot;——要求设计师只用 5 种标准动画,你的转换器只处理这几种 XML 节点。



七、白板厂商(声网/腾讯)的"白名单式逆向"

在线白板(如声网互动白板、腾讯互动白板)也支持 PPT 导入,并且声称能保留动画。它们的实现方式不是"全功能仿真",而是&quot;白名单式逆向&quot;——只解析和还原它能处理的那部分动画,其余的直接丢弃或降级。

1. 公开的白名单与黑名单

声网和腾讯都在官方文档中明确列出了支持和不支持的动画清单,这不是"尽力兼容",而是"精确划定边界":

腾讯白板公开了支持的 Entrance、Emphasis、Exit、Motion Paths 和过渡动画列表,同时明确列出 5 种不支持的动效:Bold Flash、Underline、Grow With Color、Bold Reveal、Wipe。

声网白板也列出了不支持的页面切换动画(airplane、origami、fragments 等)和强调动画(brush color、color pulse 等)。

这说明它们的转码引擎内部内置了一张&quot;支持/不支持&quot;的映射表,遇到支持的标签就转,遇到不支持的直接跳过。

2. 主动约束输入:限制条款暴露实现边界

腾讯的《PPT 文档制作规范》里有一系列看似"用户体验建议"的条款,实际上是转码引擎处理能力的硬边界

  • 每页 PPT 动效尽量不超过 5 个
  • 每个触发器下动效尽量不超过 1 个
  • 避免跨页面动效
  • 同一个元素不要设置循环动效
  • 不要加盖蒙层(蒙层会影响点击穿透)
  • 请勿添加 3D 动效

声网也有类似限制:高级点击触发器可能穿透底层元素,路径动画不支持倒放,动画延迟时间可能有误差。

这些限制不是为了用户,而是因为转码引擎解析不了复杂场景

3. 和 WPS 逆向的核心区别

维度
WPS
白板转码(声网/腾讯)
目标
让用户感觉"和 Office 一样"
让 PPT 动画能在网页里播放
兼容范围
尽量全功能兼容
白名单子集(约 200+ 种动画)
不支持时的处理
降级为近似效果(如 3D 转 2D)
直接丢弃或变为静态显示
触发器复杂度
支持多条件、VBA 联动
只支持简单 onClick,且限制触发器下动画数量
插值精度
追求像素级一致
允许小误差("延迟时间可能有误差")
WPS 文件
必须兼容(国内大量用户)
明确不支持
,"WPS 有兼容性问题"
工作量
20 年、上千人
自研引擎,聚焦子集

一句话总结:WPS 是在做&quot;Office 仿真器&quot;,白板转码是在做&quot;PPT 动画子集翻译器&quot;

4. 它们具体怎么"逆向"

虽然没有开源代码,但从公开信息可以推断其内部实现:

解析层:解压 PPTX,读取 slide1.xml 中的 &lt;p:timing&gt;,提取:

  • &lt;p:animMotion&gt;
     的 path 属性(SVG 路径字符串)
  • &lt;p:cond evt=&quot;onClick&quot;&gt;
     的触发器目标
  • &lt;p:cTn&gt;
     的 dur(时长)、delay(延迟)
  • presetClass=&quot;entr/exit/emph/path&quot;
     的动画类型

映射层:PPT 动画 → 网页动画

PPT XML 标签
白板转码后的输出
presetClass=&quot;entr&quot;
 + presetID=&quot;1&quot; (淡入)
CSS opacity: 0→1 或 GSAP fadeIn
presetClass=&quot;path&quot;
 + path=&quot;M 0 0 L 0 0.25 E&quot;
前端路径动画引擎(自研或基于 GSAP)
&lt;p:cond evt=&quot;onClick&quot;&gt;
JS click 事件 + nextStep() 调用
&lt;p:seq&gt;
 / &lt;p:par&gt;
内部时间轴控制(类似 GSAP Timeline)

渲染层:白板不是单纯播放 HTML5,而是要把 PPT 嵌入协同场景

  • 翻页同步:老师点击"下一步"生成信令广播,学生端同步调用 goToStep()
  • 状态隔离:PPT 动画状态与白板笔迹、图形状态统一管理
  • 资源托管:转码后的 H5 资源(HTML/CSS/JS/图片)存入对象存储(COS/OSS),通过 URL 加载

5. 为什么它们明确不支持 WPS

WPS 在国内市场份额很高,但声网和腾讯都明确声明不支持 WPS 文件

"Converting WPS files is not yet supported." — 声网"WPS 和 Keynote 都有一定的兼容性问题" — 腾讯

原因有三:

  1. WPS 的 OOXML 输出与 Office 有差异:WPS 为了兼容自己的历史格式,某些动画节点的属性值、命名空间扩展与 Office 不同
  2. 转码引擎只针对 Office 的 XML 模式做了适配:"白名单"是基于 Office 的 OOXML 行为建立的,WPS 的偏差导致解析失败
  3. 腾讯的 workaround:提供了"备用转码方案"(基于 COS 文档转码),专门针对 WPS 课件,但效果不如推荐方案

这侧面证明:它们的解析器不是通用 OOXML 解析器,而是&quot;针对 Office 特定行为的定制化解析器&quot;

6. 对自建方案的启示

如果你要自建类似的转换器,不要学 WPS(太重),要学白板(够轻)

  • 定义一个明确的动画白名单(如只支持:淡入、飞入、擦除、路径运动、点击触发器)
  • 超出范围的直接拒绝或降级(提示"该动画不支持,已转为静态显示")
  • 主动约束输入:要求设计师在制作 PPT 时遵守规范(如每页不超过 5 个动画)

最新文章

随机文章

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