当前位置:首页>Linux>Linux VFS 架构总览:从“文件”到“虚拟文件系统”的全链路解析

Linux VFS 架构总览:从“文件”到“虚拟文件系统”的全链路解析

  • 2026-01-31 19:22:58
Linux VFS 架构总览:从“文件”到“虚拟文件系统”的全链路解析

如果你在 Linux 下运行任何应用,你一定在使用文件系统。

文件系统的核心能力并不只是“存文件”,更重要的是它为应用提供了统一的存储接口:

  • 读写文件

  • 创建/删除/重命名

  • 目录遍历

  • 权限控制

  • 软硬链接

  • 内存映射

  • 设备访问

  • 网络文件访问

这些看似简单的操作,背后是复杂的内核体系。

VFS 层结构示意

┌────────────────────────────────────┐│             VFS 层                ││                                    ││ sys_open/read/write/...            ││      │                             ││      ▼                             ││ path_lookup / generic_file_*       ││      │                             ││      ▼                             ││ dentry/inode/page cache            ││      │                             ││      ▼                             ││ filesystem specific ops (ext4)     │└────────────────────────────────────┘

Linux 的文件系统并不是单一的,而是多种多样的:ext4、xfs、btrfs、nfs、cifs、tmpfs、procfs、sysfs、overlayfs 等。

如果没有一层统一抽象,内核将变成“各种文件系统各自实现一套系统调用”的混乱系统。

因此,Linux 引入了 VFS(Virtual File System)

它不是一个真正的文件系统,而是一层 统一的抽象层,用于连接系统调用与具体文件系统。


1. 为什么要有 VFS?

1.1 多文件系统并存的现实需求

Linux 需要支持:

  • 本地磁盘文件系统(ext4、xfs、btrfs)

  • 网络文件系统(NFS、CIFS)

  • 内存文件系统(tmpfs)

  • 特殊虚拟文件系统(procfs、sysfs)

  • 可插拔的文件系统(FUSE)

如果没有统一抽象,用户态程序需要针对不同文件系统编写不同代码,这显然不可行。

1.2 系统调用与文件系统实现解耦

系统调用层(如 open、read、write)不应该关心底层存储细节。

VFS 的作用是:

  • 将系统调用统一映射到 VFS 操作

  • VFS 再通过函数指针调用具体文件系统实现

  • 用户态程序无需关心底层文件系统类型


2. VFS 的核心目标与设计原则

2.1 统一接口

VFS 为每个文件系统定义了一套统一的操作集:

    super_operationsinode_operationsfile_operationsdentry_operations

    每个文件系统只要实现这些操作,就能被 VFS 识别与调用。

    2.2 统一命名空间(Namespace)

    Linux 的文件系统结构是一棵树:

    /|-- bin|-- etc|-- home|-- var|-- mnt

    每个挂载点(mount)都属于同一棵树。

    VFS 的使命是维护这棵树的统一性。

    2.3 缓存与性能优化

    VFS 提供统一的缓存体系,主要包括:

    • dentry cache:路径解析缓存

    • inode cache:元数据缓存

    • page cache:数据缓存

    这些缓存是 Linux 文件系统性能的核心。

    2.4 可扩展性与可插拔性

    Linux 的文件系统可以动态加载、卸载,支持:

    • 直接内核模块(如 ext4、xfs)

    • FUSE(用户态文件系统)

    • 网络文件系统(NFS、CIFS)

    VFS 的抽象设计保证了系统的可扩展性。


    3. VFS 的关键概念与术语

    下面是 VFS 的核心概念,必须理解清楚才能读懂后续内容。

    3.1 inode(索引节点)

    inode 代表一个文件(或目录、设备文件等)的元数据,包括:

    • 文件类型(普通文件、目录、字符设备、块设备等)

    • 权限(rwx)

    • 所属用户/组

    • 文件大小

    • 时间戳(atime、mtime、ctime)

    • 数据块指针(指向磁盘块)

    • 链接计数(硬链接数)

    • 其他属性(ACL、SELinux 等)

    注意:

    • inode 是文件系统级别的标识

    • 不同文件系统的 inode 号可能重复

    • inode 不包含文件名(文件名存在目录项中)

    3.2 dentry(目录项)

    dentry 是目录项,用于实现:

    • 目录结构

    • 文件名到 inode 的映射

    • 路径解析缓存

    一个 dentry 可能指向一个 inode,也可能是一个“负 dentry”(表示路径不存在)。

    3.3 super_block(超级块)

    super_block 代表一个挂载的文件系统整体信息:

    • 文件系统类型

    • block size

    • 最大文件数

    • 根目录 dentry

    • 相关操作集合(super_operations)

    3.4 file(文件对象)

    file 代表一次打开操作的结果:

    • 由 open 创建

    • 由 close 销毁

    • 保存读写偏移量 f_pos

    • 绑定 file_operations(f_op)

    一个 inode 可以被多个 file 对象引用(即多个进程打开同一文件)。

    3.5 vfsmount(挂载信息)

    vfsmount 代表一个挂载点:

    • 记录挂载点目录(mnt_root)

    • 记录 super_block

    • 形成挂载树(mount tree)


    4. VFS 的核心数据结构

    4.1 主要结构关系图

    process  |  +-- fd table        |        +-- file (open instance)              |              +-- inode (metadata)              |     |              |     +-- super_block (filesystem)              |              +-- dentry (path cache)              |              +-- vfsmount (mount point)

    4.2 数据结构表(关键字段与作用)

    结构
    作用
    关键字段
    典型生命周期
    super_block
    文件系统整体
    s_root, s_op
    挂载/卸载
    inode
    文件元数据
    i_ino, i_mode, i_size, i_nlink
    文件创建/删除
    dentry
    目录项缓存
    d_name, d_inode, d_parent
    路径解析
    file
    打开实例
    f_pos, f_op, f_inode
    open/close
    vfsmount
    挂载点
    mnt_root, mnt_sb
    mount/unmount

    5. VFS 的核心调用流程

    5.1 open() 的流程(核心函数与机制)

    用户态:

    int fd = open("/home/user/a.txt", O_RDONLY);

    open() 流程图

    open()  |sys_open()  |path_lookup()  |dentry cache?  |     \  yes    no  |       |  v       vinode    fs_lookup()  |vfs_open()  |file struct  |return fd

    内核路径:

    1. sys_open / do_sys_open

    2. path_lookupat(路径解析)

    3. nameidata(path 解析上下文)

    4. dentry(路径缓存)

    5. vfs_open(VFS open)

    6. inode

    7. file(创建 file struct)

    8. file->f_op->open(调用文件系统 open)

    5.1.1 路径解析的核心:path_lookup

    path_lookup 是路径解析的核心函数,它会:

    • 逐级解析路径组件

    • 利用 dentry cache 加速

    • 处理符号链接、挂载点、..、. 等

    路径解析是 VFS 性能的重要瓶颈。


    5.2 read() 的流程(含 page cache)

    用户态:

    ssize_t n = read(fd, buf, len);

    内核路径:

    1. sys_read

    2. vfs_read

    3. file->f_op->read_iter(generic_file_read_iter)

    4. page cache 查找

    5. 缓存 miss -> filemap_read -> readpage

    6. 数据拷贝到用户空间

    5.2.1 page cache 的关键:generic_file_read_iter

    generic_file_read_iter 负责:

    • page cache 查找

    • page lock

    • 处理文件末尾

    • 调用底层 readpage 填充 page


    5.3 write() 的流程(含 writeback)

    用户态:

    ssize_t n = write(fd, buf, len);

    内核路径:

    1. sys_write

    2. vfs_write

    3. file->f_op->write_iter(generic_file_write_iter)

    4. 写入 page cache(dirty page)

    5. 后台 writeback 或 sync 写盘

    5.3.1 writeback:什么时候写盘?

    写盘时机取决于:

    • dirty_ratio / dirty_background_ratio

    • 后台 flush 线程

    • sync 或 fsync 强制写盘

    • 文件系统 mount 选项(data=writeback 等)


    6. VFS 与具体文件系统的协作

    6.1 VFS 通过函数指针实现“接口调用”,熟悉内核的朋友应该都知道的

    VFS 的调用链:

    vfs_read -> generic_file_read_iter -> ext4_readpage

    7. VFS 缓存体系:深入剖析

    VFS 缓存体系是 Linux 文件系统性能的核心。下面逐个讲清楚:

    7.1 dentry cache(路径解析缓存)

    dentry cache 的作用是:

    • 缓存目录项(文件名 -> inode 的映射)

    • 加速路径解析

    • 减少目录查找 I/O

    7.1.1 dentry 的引用计数

    每个 dentry 有一个引用计数 d_count当引用计数为 0 时,dentry 可能被回收。

    7.1.2 负 dentry(negative dentry)

    当路径不存在时,VFS 会创建一个“负 dentry”,用于缓存“文件不存在”的结果,避免重复访问磁盘。


    7.2 inode cache(元数据缓存)

    inode cache 缓存 inode 的元数据,减少读取 inode 的磁盘 I/O。

    inode 的生命周期:

    • 创建(文件创建/打开)

    • 引用计数(i_count)

    • 链接计数(i_nlink)

    • 删除(unlink)

    • 回收(i_count==0 且 i_nlink==0)


    7.3 page cache(数据缓存)

    page cache 是最重要的缓存,它缓存文件内容。几乎所有的文件读写都经过 page cache。

    7.3.1 page cache 的命中逻辑

    • 读:先查 page cache,命中则直接返回

    • 写:写入 page cache,标记 dirty

    • 后台 flush:dirty page 写盘

    7.3.2 readahead(预读)

    当文件被顺序读取时,Linux 会启用 readahead 机制:

    • 预先读取下一段数据到 page cache

    • 提升顺序读性能

    7.3.3 writeback(写回)

    写回策略:

    • 延迟写:提高写性能

    • 但可能造成数据丢失风险(断电/崩溃)

    • 可通过 fsync 强制写回


    8. VFS 的锁与并发控制

    VFS 的并发控制非常复杂,主要依靠以下锁:

    8.1 inode lock(i_mutex / i_rwsem)

    用于保护 inode 元数据和结构一致性。

    典型使用场景:

    • rename

    • truncate

    • unlink

    • setattr

    8.2 dentry lock(d_lock)

    用于保护 dentry 状态,避免路径解析冲突。

    8.3 page lock(page lock)

    保护 page cache 的内容一致性,避免多个线程同时修改同一 page。


    9. 通过典型场景,解释一下 VFS 的行为与性能影响。

    9.1 文件拷贝(cp)的真实性能瓶颈

    cp 的过程:

    open(src)open(dst)read(src)write(dst)

    其中性能瓶颈可能来自:

    • page cache miss(读盘)

    • 写回压力(写盘)

    • 目录缓存 miss(open 很慢)

    • 文件系统碎片

    • 设备 I/O 限制

    9.1.1 性能优化建议

    • 使用 cp --reflink(支持的文件系统,如 btrfs、xfs)

    • 使用 dd if=... of=... bs=... 调整块大小

    • 对大文件使用 O_DIRECT(绕过 page cache,但需要对齐)

    • 使用 rsync --inplace(减少临时文件)


    9.2 rm 删除文件的真实逻辑(为什么 rm 后仍占空间)

    当执行:

    rm /tmp/a

    VFS 做了什么?

    1. path_lookup 找到 dentry

    2. vfs_unlink 删除目录项

    3. inode->i_nlink--

    4. 若 i_nlink==0 且 file 引用计数==0

    5. 释放 inode 和数据块

    但如果文件仍被进程打开(file 仍存在),则:

    • i_nlink 变为 0

    • 但 i_count > 0

    • 文件仍占用磁盘空间

    • 直到最后一个 file 关闭后才释放


    9.3 硬链接与软链接(底层差异)

    9.3.1 硬链接(link)

    硬链接的实现:

    • 新建一个 dentry 指向同一 inode

    • inode->i_nlink++

    硬链接特点:

    • 共享 inode

    • 删除某个链接不影响其他链接

    • 不跨文件系统

    9.3.2 软链接(symlink)

    软链接:

    • dentry 指向一个路径字符串

    • 访问时需要再次解析路径

    软链接特点:

    • 可跨文件系统

    • 可能出现“断链”(目标不存在)


    9.4 mmap(内存映射)的真实机制

    mmap 的作用:

    • 将文件映射到进程虚拟地址空间

    • 读写时直接访问内存页

    • 通过 page fault 触发 page cache 读写

    mmap 的优势:

    • 适合随机读写大文件

    • 减少系统调用开销

    mmap 的风险:

    • 需要注意同步(msync、munmap)

    • 可能导致写回压力集中


    10. VFS 调试与性能优化实践

    缓存体系关系

    [应用程序]     |[系统调用]     |[ VFS ]  |    \  |     \[dentry cache]  [inode cache]  \             /   \           /    \         /     [page cache]          |      [磁盘 I/O]

    10.1 常用工具与命令

    工具
    作用
    场景
    strace
    系统调用跟踪
    查 open/read/write 频率
    perf
    性能分析
    查 CPU / I/O hot path
    ftrace
    内核函数跟踪
    跟踪 vfs_* 调用
    bpftrace
    动态追踪
    追踪路径解析/缓存命中
    iostat
    I/O 统计
    查看磁盘负载
    vmstat
    内存/缓存统计
    观察 page cache
    /proc/sys/vm
    调整缓存策略
    dirty_ratio 等
    dmesg
    文件系统错误
    ext4/xfs 错误日志

    10.2 典型性能问题定位

    10.2.1 读性能差(高 I/O 低 CPU)

    原因:

    • page cache miss

    • 磁盘随机读

    • 文件系统碎片

    • 网络文件系统延迟

    解决:

    • 增加内存(提升 page cache)

    • 调整 readahead

    • 使用更适合的文件系统(xfs、btrfs)

    • 对网络文件系统优化网络参数

    10.2.2 写性能差(大量 dirty page)

    原因:

    • 写回压力集中

    • dirty_ratio 设置过高

    • 大量 small write(导致频繁 flush)

    • fsync 频繁

    解决:

    • 调整 dirty_ratio / dirty_background_ratio

    • 合并写(writev)

    • 减少 fsync 频率

    • 使用 SSD / NVMe


    11. 典型源码解析(硬核部分)

    下面给出一些 VFS 关键函数的逻辑解析(简化版,便于理解)。

    11.1 path_lookup(路径解析)

    核心逻辑:

    1. 分解路径组件

    2. 逐级查找 dentry

    3. 若 dentry cache miss,则调用文件系统 lookup

    4. 处理符号链接、挂载点、权限检查

    路径解析是 VFS 的核心性能瓶颈之一。


    11.2 vfs_read(读取)

    vfs_read 的核心作用:

    • 选择正确的 file_operations

    • 处理不同类型文件(普通文件、管道、字符设备)

    • 走 page cache 或直接调用设备读


    11.3 generic_file_read_iter(通用读取)

    它实现了:

    • page cache 查找

    • 处理 page lock

    • 调用底层 readpage 填充数据

    • 处理 EOF

    这是文件系统读取的通用路径。


    11.4 generic_file_write_iter(通用写入)

    它实现了:

    • 写入 page cache

    • 标记 dirty page

    • 处理 writeback

    • 处理 O_DIRECT 或 mmap 的写入


    12. VFS 的“黑科技”与进阶特性

    12.1 overlayfs(联合挂载)

    overlayfs 允许将多个目录“叠加”在一起:

    upperdir  -> 可写层lowerdir  -> 只读层merged    -> 统一视图

    它的核心价值:(这里在嵌入式系统中常用)

    • 容器镜像写时复制(copy-on-write)

    • 快速构建轻量容器文件系统


    12.2 namespaces(命名空间)

    Linux 支持 mount namespace:

    不同进程组可以看到不同的文件系统树。

    例如容器中:

    • 看到的 / 与宿主机不同

    • mount 操作不会影响宿主机


    13. 常见误区与工程建议

    13.1 “文件系统性能只与磁盘有关”

    错误。性能还与:

    • page cache

    • dentry/inode 缓存

    • 写回策略

    • 文件系统结构

    • CPU 与内存

    密切相关。

    13.2 “关闭缓存就能真实测试”

    错误。关闭缓存会让性能指标失真,因为真实场景下缓存必然存在。正确做法是:

    • 观察缓存命中率

    • 真实场景模拟

    13.3 “fsync 一定要频繁调用”吗?

    答案是不一定啊。因为频繁 fsync 会导致性能下降,但对于数据库等强一致性场景必须,工程上应权衡一致性与性能。


    14. 最后我们总结一下

    1. VFS 是统一抽象层:系统调用 -> VFS -> 具体文件系统

    2. 核心数据结构:super_block、inode、dentry、file、vfsmount

    3. 缓存体系是性能关键:dentry cache、inode cache、page cache

    4. 路径解析是性能瓶颈:dentry cache 命中率决定 open 速度

    5. page cache 是 I/O 性能核心:读写大多数通过 page cache

    6. 锁机制是并发核心:inode lock、dentry lock、page lock

    7. 不同文件系统实现不同:ext4、xfs、nfs 等通过函数指针实现接口

    8. 工程优化要从缓存、I/O、写回策略入手


    如果你觉得本文对你理解 VFS 有帮助,欢迎关注“Linux 炉边会”,我会持续输出:

    • 内核架构解读

    • 性能调优实战

    • 系统工程落地

    • 关键命令与源码分析

    留言告诉我你最想看的主题:

    • VFS 源码逐行拆解?

    • page cache 与 swap 的深度关联?

    • 文件系统性能调优实战?

    • NFS/CIFS 的 VFS 适配机制?

    我会在后面文章中优先输出。

    最新文章

    随机文章

    基本 文件 流程 错误 SQL 调试
    1. 请求信息 : 2026-02-07 13:34:03 HTTP/2.0 GET : https://f.mffb.com.cn/a/470450.html
    2. 运行时间 : 0.168213s [ 吞吐率:5.94req/s ] 内存消耗:4,776.63kb 文件加载:140
    3. 缓存信息 : 0 reads,0 writes
    4. 会话信息 : SESSION_ID=b7f0363b684ab08e74ac44f37a1b236b
    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.000575s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
    2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000748s ]
    3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000266s ]
    4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.002198s ]
    5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000615s ]
    6. SELECT * FROM `set` [ RunTime:0.000202s ]
    7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000613s ]
    8. SELECT * FROM `article` WHERE `id` = 470450 LIMIT 1 [ RunTime:0.006632s ]
    9. UPDATE `article` SET `lasttime` = 1770442443 WHERE `id` = 470450 [ RunTime:0.007784s ]
    10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.006435s ]
    11. SELECT * FROM `article` WHERE `id` < 470450 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000519s ]
    12. SELECT * FROM `article` WHERE `id` > 470450 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.014168s ]
    13. SELECT * FROM `article` WHERE `id` < 470450 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.010886s ]
    14. SELECT * FROM `article` WHERE `id` < 470450 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.007664s ]
    15. SELECT * FROM `article` WHERE `id` < 470450 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.044094s ]
    0.170395s