乐于分享
好东西不私藏

跨领域生命周期模式:软件工程的统一视角

跨领域生命周期模式:软件工程的统一视角

从 C++ RAII(1985年)到 Vue 3 Composition API(2020年),40年间,软件工程的生命周期哲学从未改变:资源获取有边界,生命周期有始终。

这篇文章揭示一个反直觉的真相:前端组件、后端请求、数据库事务、TCP连接、Docker容器、Kubernetes Pod——它们共享同一套生命周期设计模式。


一、生命周期的统一模型

1.1 统一抽象

所有领域的生命周期都遵循相同模式:进入 → 运行 → 退出

领域
创建
运行
销毁
Python / FastAPI
__enter__
 / yield 前
使用
__exit__
 / yield 后
Vue / 前端
onMounted
渲染
onUnmounted
C++
构造函数
作用域
析构函数(异常安全)

1.2 设计模式:生命周期的架构抽象

Template Method 模式 —— 生命周期的原型

这是所有生命周期钩子的设计模式原型

abstract class Application {    public final void run() {        init();          // 创建阶段        loadConfig();    // 配置加载        start();         // 启动阶段        while (running) {            process();   // 运行阶段        }        cleanup();       // 销毁阶段    }    abstract void init();    abstract void process();    abstract void cleanup();}

Template Method = 生命周期钩子的 GoF 定义。Vue 的 onMountedonUnmounted 本质上是 Template Method 模式在 JavaScript 运行时中的动态实现。

State 模式 —— 生命周期状态机

interface TCPState {    void open(TCPConnection conn);    void close(TCPConnection conn);    void acknowledge(TCPConnection conn);}
设计模式
生命周期关联
与 Vue 的关系
Template Method
定义骨架,子类实现钩子
Vue 的 onMounted 就是模板方法的"钩子"
State
状态转换 = 生命周期阶段切换
组件在 mounted/unmounted 之间切换
Observer
生命周期事件通知订阅者
Vue 的响应式系统 = Observer
Factory Method
封装对象创建 = 生命周期起点
createApp()、defineComponent()
Proxy
控制对目标对象的访问 = 生命周期拦截
Vue 3 的 Proxy 响应式系统

【语言层】编程语言实现

二、Python:上下文管理器的纯粹形式

2.1 with 语句 —— RAII 的 Python 实现

with open('data.txt') as f:    data = f.read()

背后的生命周期:

2.2 @contextmanager —— 生命周期可组合复用

from contextlib import contextmanager@contextmanagerdef managed_resource(name):    print(f"获取资源: {name}")    resource = acquire(name)    try:        yield resource # ← 使用点    finally:        print(f"释放资源: {name}")        resource.release()with managed_resource("db") as db, managed_resource("cache") as cache:    db.query(...)    cache.get(...)

对比 Vue 的 composable:

function useResource(name: string) {  onMounted(() => acquire(name))  onUnmounted(() => release(name))}

2.3 FastAPI 三层嵌套生命周期

应用级生命周期

from contextlib import asynccontextmanagerfrom fastapi import FastAPI@asynccontextmanagerasync def lifespan(app: FastAPI):    await connect_database()    await redis.ping()    yield                       # ← 应用在此运行    await disconnect_database()    await redis.close()app = FastAPI(lifespan=lifespan)

依赖级生命周期

async def get_db():    db = SessionLocal()    try:        yield db    finally:        db.close()@app.get("/users")async def get_users(db: Session = Depends(get_db)):    ...

三、C++:RAII 的开创者

C++ RAII(1985年)是生命周期哲学的鼻祖——构造函数获取资源,析构函数释放资源,编译器保证在对象离开作用域时自动调用析构函数。

class FileHandle {public:    FileHandle(const string& path) : file(fopen(path.c_str(), "r")) {        if (!file) throw runtime_error("Cannot open file");    }    ~FileHandle() {        if (file) fclose(file);  // RAII:析构函数自动释放    }private:    FILE* file;};// 使用void process(){    FileHandle file("data.txt");  // 构造函数打开文件    // ... 使用 file ...}  // 析构函数自动关闭文件,即使抛出异常也会执行

RAII 的核心优势

  • • 异常安全:栈上的对象离开作用域时,析构函数一定会被调用
  • • 资源获取即初始化:Resource Acquisition Is Initialization
  • • 零运行时开销:编译器生成析构调用代码,无垃圾回收
C++ RAII
等价概念
说明
构造函数
onMounted
获取资源
析构函数
onUnmounted
释放资源
栈对象
作用域
自动管理生命周期
智能指针
响应式 ref
自动引用计数

四、Rust:编译期生命周期的极致

如果说前面都是"运行时管理",那 Rust 把生命周期提升到了编译期——这是质的飞跃。

4.1 所有权三原则

fn main() {    let s = String::from("hello");  // 创建(进入作用域)    println!("{}", s);               // 使用(拥有所有权)}                                   // 销毁(离开作用域,自动调用 drop)
Rust 概念
等价 Vue
本质突破
所有权
组件对 ref 的独占引用
一个值只有一个拥有者
借用
props 只读
不可变借用
生命周期标注 'a
响应式依赖追踪
编译期静态验证
Drop trait
onUnmounted
离开作用域自动清理

4.2 生命周期标注

// &#x27;a 声明:"返回的引用活得和两个参数一样久"fn longest<&#x27;a>(x: &&#x27;a str, y: &&#x27;a str) -> &&#x27;a str {    if x.len() > y.len() { x } else { y }}
Vue / 大多数框架
Rust
检查时机
运行时
编译时
违规后果
内存泄漏(运行时才发现)
编译错误
哲学
相信开发者 + 运行时兜底
编译器证明正确性

关键洞察:Rust 的生命周期标注 'a 是软件工程史上对"生命周期"最激进、最形式化的表达——它把生命周期变成了类型系统的一部分


五、Haskell:纯函数式的资源管理

从命令式进入函数式范式——Haskell 的 bracket 如何实现纯函数式的资源管理。

5.1 bracket —— 纯函数式的 with

readFile&#x27; :: FilePath -> IO StringreadFile&#x27; path = bracket    (openFile path ReadMode)    -- 获取资源    hClose -- 释放资源    hGetContents                -- 使用资源
Haskell bracket
Python with
Vue
acquire
enter
onMounted
release
exit
onUnmounted
use
with 块
组件渲染
bracketOnError
exit
 检查异常
onErrorCaptured

Haskell 的独特贡献bracket 保证即使在使用过程中抛出异常,release 也一定会被调用。这是纯数学意义上的"资源不会泄漏"。


【运行时层】框架的生命周期

六、Vue3:前端组件的生命周期

Vue 3 的 Composition API 是现代前端生命周期的代表:

// Vue 3 composablefunction useResource(name: string) {  const resource = ref(null)  onMounted(async () => {    resource.value = await acquire(name)  // 获取资源  })  onUnmounted(() => {    release(resource.value)                // 释放资源  })  return resource}

生命周期钩子全景图

阶段
钩子
用途
创建
setup()
初始化响应式状态
挂载
onMounted
DOM 已渲染,可访问 DOM
更新
onUpdated
DOM 已更新
卸载
onUnmounted
清理资源、定时器、订阅
错误
onErrorCaptured
捕获子组件错误

6.1 <KeepAlive> 与缓存组件

KeepAlive 状态
等价概念
activated
onActivated
deactivated
onDeactivated
缓存
不卸载,只失活

七、Spring:企业级 IoC 容器

Spring 框架的 Bean 生命周期是 IoC 容器中最经典的设计之一:

Spring Bean 阶段
等价 Vue 概念
说明
实例化(new)
setup()
对象已创建,但依赖未注入
属性注入
Vue 自动注入 ref/props
依赖装配完毕
@PostConstruct
onMounted
初始化回调
@PreDestroy
onUnmounted
清理资源

八、Unity:游戏引擎的生命周期

Unity 的脚本组件有严格的生命周期执行顺序:

Unity 方法
等价 Vue
说明
Awake
setup()
初始化引用
Start
onMounted
所有组件就绪
Update
onUpdated
每帧处理输入
FixedUpdate
watchEffect
固定物理频率
OnDestroy
onUnmounted
清理场景对象

帧循环(Game Loop)vs 响应式更新:Unity 的 Update 是主动轮询,Vue 的响应式系统是被动推送


九、JPA:ORM 实体的生命周期

User user = new User();                // TRANSIENTentityManager.persist(user);           // MANAGEDuser.setName("Alice");                 // 自动同步到数据库entityManager.detach(user);            // DETACHEDentityManager.merge(user);             // MANAGEDentityManager.remove(user);            // REMOVED

十、RxJS:响应式数据流的生命周期

RxJS 的生命周期是"推式数据流"的典型代表:

RxJS 生命周期
等价 Vue 概念
Observable.create
setup() 中定义响应式逻辑
subscribe
onMounted + watch
next
ref.value = newVal 触发更新
complete
组件正常卸载
error
onErrorCaptured
unsubscribe
watch 自动清理 / onUnmounted

【系统层】基础设施

十一、进程与线程:操作系统的生命周期

11.1 Linux 进程状态转换

进程生命周期是操作系统理论的基石:

核心流程

pid_t pid = fork();          // 复制父进程(COW)if (pid == 0) {    execve("/bin/myapp", args, env);  // 替换进程映像}exit(0);                     // 进程终止(PCB 保留,进入 ZOMBIE)waitpid(pid, &status, 0);    // 父进程收尸,释放 PCB
内核状态
含义
等价 Vue
TASK_RUNNING
就绪/运行中
组件渲染中
TASK_INTERRUPTIBLE
等待资源(可被唤醒)
await fetch()
TASK_UNINTERRUPTIBLE
等待资源(不可打断)
同步操作
TASK_STOPPED
被信号暂停
<KeepAlive>
 失活
TASK_TRACED
ptrace 调试
DevTools 断点
EXIT_ZOMBIE
已终止,等待回收
卸载但定时器未清
EXIT_DEAD
PCB 释放
完全销毁

11.2 僵尸进程 —— 操作系统版本的"内存泄漏"

僵尸进程的本质:子进程的生命周期已经结束,但父进程的生命周期还未处理子进程的终止事件。

僵尸进程
前端僵尸副作用
根本原因
子进程 exit 但父进程没 wait
组件 unmounted 但定时器没 clear
创建者未在合适时机清理
PCB 无法释放,PID 泄漏
回调仍在执行,内存泄漏
资源生命周期的"尾"未被处理
解决方案:父进程 waitpid()
解决方案:组件 onUnmounted()
同一个模式——谁创建,谁清理

十二、数据库与网络协议

12.1 数据库事务生命周期

try:    db.begin()              # 开启事务    db.execute("UPDATE ...")    db.commit()             # 提交except Exception:    db.rollback()           # 回滚
阶段
等价 Vue
保证
BEGIN
onMounted
开始事务,记录 undo log
Active
组件运行
执行 SQL
COMMIT
onUnmounted
持久化、释放锁
ROLLBACK
onErrorCaptured
撤销、恢复

12.2 连接池生命周期

连接池
<KeepAlive>
 缓存组件
连接不销毁,复用
组件不卸载,缓存
借出 = activated
onActivated
归还 = deactivated
onDeactivated
超时关闭 = 缓存淘汰
LRU 缓存淘汰

12.3 TCP 连接状态机

TCP 的生命周期是最具教科书意义的生命周期之一:

TCP 状态
等价 Vue
特征
CLOSED
组件未创建
无资源
SYN_SENT
setup()
正在建连
ESTABLISHED
onMounted
可传输数据
FIN_WAIT_1/2
onBeforeUnmount
清理中
TIME_WAIT
卸载但回调未完
等待延迟包
CLOSED
完全销毁
资源释放

TIME_WAIT 与前端竞态:TCP 的 TIME_WAIT 状态是为了处理"延迟到达的数据包"而存在的。这与前端中"组件已卸载、但 API 响应才刚刚回来"的问题高度相似。


【运维层】部署与运行

十三、容器与编排:Docker + Kubernetes

13.1 Docker 容器生命周期

Docker 状态
等价 Vue 概念
说明
docker create
组件实例化
created
docker start
mounted
running
docker pause
deactivated
keep-alive 失活
docker unpause
activated
keep-alive 激活
docker stop
beforeUnmount
SIGTERM 清理
docker rm
unmounted
deleted

优雅关闭(Graceful Shutdown)

docker stop -t 10 myapp  # 发送 SIGTERM,给 10 秒清理时间,然后 SIGKILL

13.2 Kubernetes Pod 生命周期

K8s 阶段
含义
等价前端概念
Pending
已调度但容器未启动
setup() 执行中
Running
容器在运行
onMounted 后的正常运行
Succeeded
正常完成任务
组件正常关闭
Failed
非零退出码
组件抛出未捕获异常
CrashLoopBackOff
不断崩溃重启
组件在 onMounted 中反复报错

【测试层】质量保障

十四、测试夹具生命周期

每个测试用例都有标准的生命周期:

pytest 的生命周期

import pytest@pytest.fixture(scope="module")def db():    conn = create_db() # setup_module    yield conn    conn.close()            # teardown_module@pytest.fixture(autouse=True)def reset_data():    clear_cache() # setup_method    yield    log_result()            # teardown_method
pytest
Vue 等价
生命周期语义
scope="session"
应用级(App.vue)
整个测试会话的生命周期
scope="module"
路由级(页面组件)
一个模块的生命周期
scope="function"(默认)
组件级(普通组件)
单个用例的生命周期
autouse=True
watch 自动追踪
隐式注入,每次自动执行
yield 之前的代码
onMounted
前置准备
yield 之后的代码
onUnmounted
后置清理

核心洞察:测试框架的生命周期管理和前端框架的本质完全相同——都是管理有状态实体的创建和销毁


【高级主题】特殊场景

十五、分布式系统

分布式系统中的生命周期管理比单体应用复杂一个数量级,因为涉及多个节点的状态协调

15.1 Raft 共识算法 —— 领导者的"任期"

Raft 将时间划分为一个个 Term(任期),每个 term 只有一个 Leader:

func (rf *Raft) run() {    for {        switch rf.state {        case Follower:            rf.waitForTimeout()            rf.state = Candidate   // 开始选举        case Candidate:            rf.startElection()            rf.state = Leader      // 当选(等价于 onMounted)        case Leader:            rf.sendHeartbeats()            if rf.disconnected() {                rf.state = Follower // 失联(等价于 onUnmounted)            }        }    }}
Raft 状态
等价 Vue 概念
分布式特有的挑战
Follower
子组件(被动接受数据)
被动方也可能成为主动方(选举)
Candidate
setup()(初始化尚未完成)
涉及网络通信,可能超时或失败
Leader
父组件(主动推送数据)
需要向所有 Follower 发送心跳
Term
组件实例的"代"
每个"代"最多一个 Leader,防止脑裂

关键洞察:分布式系统中的生命周期多了网络不确定性。Raft 必须处理"Leader 挂了但其他节点不知道"的边界情况。

15.2 Saga 分布式事务 —— 跨服务的补偿生命周期

class CreateOrderSaga:    def run(self):        steps = [            Step(create_order),       # 创建订单            Step(debit_payment),      # 扣款            Step(reserve_inventory),  # 预留库存            Step(send_notification),  # 发通知        ]        compensating = []        for step in steps:            try:                step.execute()                compensating.append(step.compensate())            except Exception:                for compensate in reversed(compensating):                    compensate() # 补偿回滚                raise SagaFailed()
Saga 概念
等价 Vue 概念
Saga 执行(正向)
组件的正常运行
补偿(逆向回滚)
onErrorCaptured 中的回滚
Choreography(编排)
事件总线通信(emit / on)
Orchestration(协调器)
父组件控制子组件生命周期

十六、现代编程范式

16.1 Kotlin 协程:结构化并发

Kotlin 协程的生命周期管理通过 CoroutineScope 实现:

fun main() = runBlocking {    coroutineScope {        launch {            // 子协程A(等价于子组件)            delay(1000)            println("A done")        }        launch {            // 子协程B(等价于子组件)            delay(500)            println("B done")        }    }    // 所有子协程执行完毕后才会执行到这里    println("All done")}
Kotlin 协程
Vue 组件
生命周期语义
coroutineScope { }
<template>
定义一个生命周期边界
launch { }
子组件
子实体,生命周期被父管理
job.cancel()
onUnmounted
主动销毁
结构化取消
父组件卸载自动卸载子组件
生命周期嵌套管理
异常传播
onErrorCaptured 冒泡
错误沿作用域/组件树传播

核心洞察:Kotlin 的结构化并发是"生命周期管理"在异步编程领域最优雅的实现。它保证了"子协程不可能比父作用域活得更久"。

16.2 插件系统生命周期

export function activate(context: vscode.ExtensionContext) {    console.log(&#x27;Extension activated&#x27;)    const disposable = vscode.commands.registerCommand(&#x27;hello&#x27;, () => {        vscode.window.showInformationMessage(&#x27;Hello!&#x27;)    })    context.subscriptions.push(disposable) // subscriptions 替代 onUnmounted}export function deactivate() {    console.log(&#x27;Extension deactivated&#x27;)}
VS Code 扩展
Vue 等价
说明
activate()
onMounted
加载扩展时调用
deactivate()
onUnmounted
停用扩展时调用
context.subscriptions
响应式系统的自动清理
推入 disposable,自动管理释放

16.3 认证与授权生命周期

OAuth 2.0 Token 生命周期

认证概念
等价 Vue 概念
Access Token 发放
onMounted(用户登录后开始)
Token 过期
watch 检测到过期状态
Refresh Token 刷新
keep-alive 组件的 onActivated
Token 吊销
onUnmounted(用户登出)
Session 超时
组件因用户无操作而自动卸载

JWT 的生命周期哲学

{  "sub": "user123",  "iat": 1680000000,   // issued at = 生命周期起点  "exp": 1680000900,   // expiration = 生命周期终点  "nbf": 1680000000    // not before = 生命周期有效区间的起点}
Vue 组件:     setup → onMounted → 运行 → onUnmountedJWT Token:   iat   → nbf       → 使用  → exp

十七、机器学习模型训练生命周期

ML 模型的完整生命周期比大多数软件组件更漫长、更复杂:

ML 阶段
等价软件生命周期概念
数据准备与清洗
资源初始化(连接 DB、读取配置)
模型训练
开发/调试阶段的组件
模型部署上线
组件挂载到生产环境(onMounted)
在线推理
组件正常运行
监控与漂移检测
watch + onErrorCaptured
模型退役
onUnmounted

【总结层】升华提炼

十八、生命周期的维度扩展

领域
实体
创建
运行
销毁
特殊挑战
语言
Python with
__enter__
使用
__exit__
异常安全
语言
C++ RAII
构造函数
作用域
析构函数
编译期保证
语言
Rust
进入作用域
借用
离开作用域
借用检查器
语言
Haskell
acquire
use
release
纯函数安全
运行时
Vue 组件
setup()
渲染
onUnmounted
onErrorCaptured
运行时
Spring Bean
实例化
运行
@PreDestroy
@ExceptionHandler
运行时
RxJS
create
next
unsubscribe
error callback
系统
进程
fork/exec
TASK_RUNNING ↔ TASK_INTERRUPTIBLE
EXIT_ZOMBIE → waitpid
SIGCHLD
系统
数据库事务
BEGIN
SQL 执行
COMMIT/ROLLBACK
回滚日志
系统
TCP 连接
三次握手
数据传输
四次挥手
TIME_WAIT
运维
Docker
create
start
stop/rm
--restart
运维
K8s Pod
Pending
Running
Succeeded/Failed
CrashLoopBackOff
测试
pytest
@BeforeAll
测试执行
@AfterAll
隔离性
分布式
Raft Leader
选举成功
心跳同步
选举超时
网络分区
分布式
Saga 事务
第一步执行
逐步推进
补偿回滚
跨服务一致性
异步
Kotlin 协程
launch
协程体
作用域结束
结构化并发
游戏
Unity 组件
Awake
Update
OnDestroy
try/catch
ORM
JPA 实体
persist
managed
remove
rollback
插件
Vite/VS Code
activate
功能提供
deactivate
热加载

核心洞察

所有"有状态、有边界、有资源"的软件实体,都需要生命周期管理。 生命周期的"维度"随着软件领域的不同而变化:

维度
领域
说明
时间维度(静态)
Rust
编译期静态检查
作用域维度
测试框架
作用域管理
架构维度
设计模式
骨架定义
空间维度
分布式系统
节点协调
嵌套结构维度
Kotlin 协程
子不能比父活得久
纯函数维度
函数式编程
纯函数封装
时空结合
Python with / FastAPI
代码块 + 启停

最终结论

Python with 是空间维度(出代码块即销毁),Vue 是时间维度(用户切走即卸载),FastAPI 两者皆有。核心模式永恒不变:创建 → yield → 销毁

这正是从 C++ RAII(1985年)到 Vue 3 Composition API(2020年)延续四十年的核心哲学。

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