当前位置:首页>Linux>Linux文件操作系统调用深度剖析

Linux文件操作系统调用深度剖析

  • 2026-01-14 02:29:57
Linux文件操作系统调用深度剖析

Linux文件操作系统调用深度剖析

引言: 为什么需要理解Linux文件操作?

在计算科学领域, Linux文件系统被公认为操作系统设计的典范之作. Linux Torvalds曾言: “Linux的哲学是‘一切都是文件’”, 这种设计理念不仅简化了系统接口, 更提供了无与伦比的灵活性. 作为Linux系统的核心组件, 文件操作机制的理解对于系统开发者、运维工程师乃至应用开发人员都至关重要

本文将深入探索Linux文件操作的内部机制, 如同外科医生解剖人体般细致地剖析每个层次、每个组件. 我们将从用户空间的应用出发, 穿越系统调用的边界, 深入内核的复杂数据结构, 最终抵达物理存储介质. 在这个过程中, 您将获得对Linux文件系统设计的深刻洞察

第一部分: Linux文件操作全景视图

1.1 宏观架构: 层次化设计之美

Linux文件操作采用经典的分层架构, 这种设计思想可以类比为邮政系统的运作:

用户应用程序 → 系统调用接口 → VFS层 → 具体文件系统 → 块设备层 → 物理存储

每个层次各司其职, 如同邮局的不同部门: 应用程序是寄信人, 系统调用是邮筒, VFS是邮件分拣中心, 具体文件系统是地方邮局, 块设备层是邮递员, 物理存储则是收件人信箱

1.2 核心设计哲学

Linux文件系统设计体现了几个关键原则:

  • • 一切皆文件: 不仅是普通文件, 设备、管道、套接字等都被抽象为文件
  • • 统一的接口: 通过相同的API(open、read、write、close)操作各种对象
  • • 层次化命名空间: 树状目录结构提供直观的资源组织方式
  • • 权限分离: 用户、组、其他三个维度的权限控制

第二部分: 虚拟文件系统(VFS)——Linux的文件操作中枢

2.1 VFS的作用与意义

VFS(Virtual File System)是Linux文件系统的抽象层, 它像是一个万能适配器, 允许不同的文件系统(ext4、XFS、NTFS、FAT32等)以统一的方式呈现给用户. 这种设计的精妙之处在于, 用户和应用程序无需关心底层文件系统的差异

2.2 VFS核心数据结构

让我们深入VFS的核心数据结构, 这些结构构成了Linux文件系统的骨架:

/* 内核源码: include/linux/fs.h *//* 超级块结构: 代表一个已挂载的文件系统 */struct super_block {struct list_head    s_list;         /* 超级块链表 */    dev_t               s_dev;          /* 设备标识符 */    unsigned long       s_blocksize;    /* 块大小 */    unsigned long       s_blocksize_bits;    loff_t              s_maxbytes;     /* 最大文件大小 */struct file_system_type *s_type;    /* 文件系统类型 */struct super_operations *s_op;      /* 超级块操作 */struct dentry       *s_root;        /* 根目录的dentry */struct list_head    s_inodes;       /* 所有inode的链表 */    // ... 其他成员};/* inode结构: 文件或目录的元数据 */struct inode {    umode_t             i_mode;         /* 文件类型和权限 */    uid_t               i_uid;          /* 所有者UID */    gid_t               i_gid;          /* 组GID */    loff_t              i_size;         /* 文件大小 */struct timespec64   i_atime;        /* 最后访问时间 */struct timespec64   i_mtime;        /* 最后修改时间 */struct timespec64   i_ctime;        /* 最后状态改变时间 */    conststruct inode_operations *i_op; /* inode操作 */struct super_block  *i_sb;          /* 所属超级块 */struct address_space *i_mapping;    /* 地址空间(用于页缓存) */    // ... 其他成员};/* dentry结构: 目录项, 链接文件名到inode */struct dentry {struct dentry       *d_parent;      /* 父目录dentry */struct qstr         d_name;         /* 文件名 */struct inode        *d_inode;       /* 关联的inode */struct list_head    d_child;        /* 兄弟节点链表 */struct list_head    d_subdirs;      /* 子节点链表 */struct dentry_operations *d_op;     /* dentry操作 */    // ... 其他成员};/* file结构: 已打开文件的上下文 */struct file {struct path         f_path;         /* 文件路径(dentry和vfsmount) */struct inode        *f_inode;       /* 关联的inode */    conststruct file_operations *f_op; /* 文件操作函数指针 */    loff_t              f_pos;          /* 当前文件位置 */    atomic_long_t       f_count;        /* 引用计数 */    fmode_t             f_mode;         /* 文件模式(读/写) */    unsigned int        f_flags;        /* 打开文件时的标志 */    // ... 其他成员};

2.3 数据结构关系图解

以下Mermaid图展示了VFS核心数据结构之间的关系:

2.4 VFS工作流程示例: 打开文件

当应用程序调用open("file.txt", O_RDONLY)时, VFS内部发生了什么?

  1. 1. 路径解析: 将路径"/home/user/file.txt"分解为分量["home", "user", "file.txt"]
  2. 2. 目录查找: 从当前目录或根目录开始, 逐级查找每个分量的dentry
  3. 3. inode获取: 找到最终文件的dentry后, 获取其关联的inode
  4. 4. 权限检查: 检查进程是否有权限访问该inode
  5. 5. file结构创建: 创建file结构, 与inode关联, 初始化文件位置指针等
  6. 6. 文件描述符分配: 在进程的文件描述符表中分配空闲位置, 返回给用户

这个过程的复杂性在于需要处理符号链接、挂载点、权限验证等多种情况, 但VFS通过统一接口隐藏了这些细节

第三部分: 文件描述符与打开文件表

3.1 文件描述符的本质

文件描述符(File Descriptor)是UNIX/Linux系统中的核心概念之一, 它是一个非负整数, 代表进程内打开文件的引用. 可以将其理解为图书馆的索书号: 您不需要知道书籍的具体存放位置, 只需提供索书号, 图书馆管理员就能找到您需要的书

3.2 三级表结构

Linux使用三级表结构管理打开的文件:

3.3 文件描述符表的实现

每个进程的task_struct中都有一个files成员, 指向files_struct结构:

struct files_struct {    atomic_t count;                    /* 引用计数 */struct fdtable __rcu *fdt;         /* 文件描述符表 */struct file __rcu * fd_array[NR_OPEN_DEFAULT]; /* 默认文件指针数组 */    // ...};struct fdtable {    unsigned int max_fds;              /* 当前最大文件描述符数 */struct file __rcu **fd;            /* 文件指针数组 */    // ...};

当进程调用open()时, 内核会:

  1. 1. 在fdtable中查找空闲位置
  2. 2. 创建file结构并初始化
  3. 3. 将file指针存入fdtable的相应位置
  4. 4. 返回位置索引作为文件描述符

第四部分: 页缓存(Page Cache)——性能加速的关键

4.1 页缓存的设计思想

页缓存是Linux文件系统性能优化的核心机制, 其基本思想基于计算机科学的两个基本原则:

  • • 时间局部性: 最近访问的数据很可能再次被访问
  • • 空间局部性: 访问某个数据时, 其附近的数据也很可能被访问

4.2 页缓存的数据结构

页缓存的核心是address_space结构, 它充当inode和内存页之间的桥梁:

struct address_space {struct inode *host;                /* 所属inode */struct radix_tree_root page_tree;  /* 页的基数树 */    spinlock_t tree_lock;              /* 保护page_tree的锁 */    unsigned long nrpages;             /* 缓存页总数 */    conststruct address_space_operations *a_ops; /* 地址空间操作 */    // ...};

4.3 页缓存工作流程

以下序列图展示了读取文件时页缓存的工作流程:

4.4 页缓存替换策略

Linux使用改进的LRU(Least Recently Used)算法管理页缓存, 将页面分为活跃列表和非活跃列表:

当系统内存不足时, 内核会从非活跃列表尾部开始回收页面, 这种方式平衡了性能和内存利用率

第五部分: 具体文件系统实现

5.1 ext4文件系统深入分析

ext4是目前Linux最常用的文件系统, 它在ext3的基础上增加了大量优化:

5.1.1 ext4磁盘布局

+----------------------------------------------------------------+| 引导块 | 超级块 | 块组描述符表 | 数据块位图 | inode位图 | inode表 | 数据块 |+----------------------------------------------------------------+

每个块组包含文件的元数据和数据, 这种设计减少了磁头移动, 提高了性能

5.1.2 ext4核心特性

特性
描述
优势
Extents
连续块的连续范围, 取代传统块映射
减少元数据, 提高大文件性能
延迟分配
推迟块分配直到数据写入磁盘
减少碎片, 更好的分配决策
多块分配
一次分配多个块
减少碎片, 提高性能
日志校验和
日志记录校验和
提高数据完整性
快速fsck
无需检查整个文件系统
加快启动时间

5.1.3 ext4数据结构示例

/* ext4超级块结构(简化版) */struct ext4_super_block {    __le32 s_inodes_count;           /* inode总数 */    __le32 s_blocks_count;           /* 块总数 */    __le32 s_r_blocks_count;         /* 保留块数 */    __le32 s_free_blocks_count;      /* 空闲块数 */    __le32 s_free_inodes_count;      /* 空闲inode数 */    __le32 s_first_data_block;       /* 第一个数据块 */    __le32 s_log_block_size;         /* 块大小(2^(10+s_log_block_size)) */    __le32 s_blocks_per_group;       /* 每组块数 */    __le32 s_inodes_per_group;       /* 每组inode数 */    __le32 s_mtime;                  /* 挂载时间 */    __le32 s_wtime;                  /* 写入时间 */    __le16 s_mnt_count;              /* 挂载计数 */    __le16 s_max_mnt_count;          /* 最大挂载计数 */    // ... 其他字段};

5.2 不同文件系统对比

特性
ext4
XFS
Btrfs
ZFS
最大文件大小
16TB
8EB
16EB
16EB
最大卷大小
1EB
8EB
16EB
16EB
日志
写时复制
部分
快照
压缩
去重
数据校验
部分
成熟度
非常高
中等

第六部分: 系统调用实现机制

6.1 从用户空间到内核空间

系统调用是用户程序与内核交互的唯一合法途径. 以read()系统调用为例:

/* 用户空间调用 */ssize_t read(int fd, void *buf, size_t count);/* 内核实现(简化) */SYSCALL_DEFINE3(read, unsigned int, fd, char __user *, buf, size_t, count){struct fd f = fdget_pos(fd);  /* 获取file结构 */    ssize_t ret = -EBADF;    if (f.file) {        loff_t pos = file_pos_read(f.file);  /* 获取当前位置 */        ret = vfs_read(f.file, buf, count, &pos);  /* 调用VFS读取 */        if (ret >= 0)            file_pos_write(f.file, pos);  /* 更新位置 */        fdput_pos(f);    }    return ret;}

6.2 系统调用执行流程

第七部分: 实际应用与调试

7.1 文件操作性能分析工具

工具
用途
示例命令
strace
跟踪系统调用
strace -e trace=file ls -l
ltrace
跟踪库调用
ltrace ls -l
perf
性能分析
perf record ls -l && perf report
iostat
I/O统计
iostat -x 1
vmstat
虚拟内存统计
vmstat 1
blktrace
块设备跟踪
blktrace -d /dev/sda -o trace
fatrace
文件访问跟踪
fatrace

7.2 文件系统调试技巧

7.2.1 使用debugfs检查ext4文件系统

# 查看超级块信息debugfs -R "stats" /dev/sda1# 查看inode信息debugfs -R "stat <inode_number>" /dev/sda1# 恢复删除的文件(如果inode还存在)debugfs -R "lsdel" /dev/sda1debugfs -w /dev/sda1  # 进入写模式debugfs: undel <inode_number>

7.2.2 内核调试技巧

// 在驱动或文件系统代码中添加调试打印pr_debug("File operation: %s, inode=%lu, pos=%lld\n",         current->comm, inode->i_ino, pos);// 使用动态调试echo "file ext4_* +p" > /sys/kernel/debug/dynamic_debug/control

7.3 性能优化实践

  1. 1. 选择合适的I/O调度器
    # 查看当前调度器cat /sys/block/sda/queue/scheduler# 设置调度器为deadline(适合数据库)echo deadline > /sys/block/sda/queue/scheduler
  2. 2. 调整页缓存参数
    # 增加脏页写回阈值echo 20 > /proc/sys/vm/dirty_ratio# 调整swappiness(减少交换)echo 10 > /proc/sys/vm/swappiness
  3. 3. 文件系统挂载优化
    # 针对SSD优化ext4挂载选项mount -o noatime,nodiratime,discard /dev/sda1 /mnt

第八部分: 实现一个简单的文件系统示例

8.1 最简单的内存文件系统

以下是一个简化版的内存文件系统实现, 展示了文件系统的基本结构:

#include <linux/module.h>#include <linux/fs.h>#include <linux/slab.h>#define SIMPLEFS_MAGIC 0x13131313#define SIMPLEFS_BLOCK_SIZE 4096#define SIMPLEFS_FILENAME_MAXLEN 255/* 内存中的inode结构 */struct simplefs_inode {    umode_t mode;           /* 文件类型和权限 */    uint64_t ino;           /* inode编号 */    uint64_t data_block;    /* 数据块位置 */    uint64_t file_size;     /* 文件大小 */};/* 内存中的超级块 */struct simplefs_sb_info {    uint64_t magic;         /* 魔数 */    uint64_t block_size;    /* 块大小 */    uint64_t inodes_count;  /* inode总数 */    uint64_t free_blocks;   /* 空闲块数 */    unsigned long *free_blocks_bitmap; /* 空闲块位图 */};/* 文件系统操作函数 */static conststruct super_operations simplefs_super_ops = {    .statfs = simplefs_statfs,    .evict_inode = simplefs_evict_inode,};static conststruct inode_operations simplefs_inode_ops = {    .create = simplefs_create,    .lookup = simplefs_lookup,    .mkdir = simplefs_mkdir,};static conststruct file_operations simplefs_file_ops = {    .read_iter = generic_file_read_iter,    .write_iter = generic_file_write_iter,    .mmap = generic_file_mmap,    .open = generic_file_open,    .release = simplefs_release,};/* 挂载文件系统 */static struct dentry *simplefs_mount(struct file_system_type *fs_type,                                     int flags, const char *dev_name,                                     void *data){struct dentry *dentry = mount_bdev(fs_type, flags, dev_name,                                       data, simplefs_fill_super);    if (IS_ERR(dentry))        pr_err("Failed to mount simplefs\n");    else        pr_info("simplefs mounted successfully\n");    return dentry;}staticstruct file_system_type simplefs_fs_type = {    .owner = THIS_MODULE,    .name = "simplefs",    .mount = simplefs_mount,    .kill_sb = kill_block_super,    .fs_flags = FS_REQUIRES_DEV,};/* 模块初始化 */static int __init simplefs_init(void){    int ret = register_filesystem(&simplefs_fs_type);    if (ret == 0)        pr_info("simplefs module loaded\n");    else        pr_err("Failed to register simplefs\n");    return ret;}/* 模块清理 */static void __exit simplefs_exit(void){    int ret = unregister_filesystem(&simplefs_fs_type);    if (ret == 0)        pr_info("simplefs module unloaded\n");    else        pr_err("Failed to unregister simplefs\n");}module_init(simplefs_init);module_exit(simplefs_exit);MODULE_LICENSE("GPL");MODULE_AUTHOR("Linux File System Explorer");MODULE_DESCRIPTION("A simple example filesystem for learning");

8.2 示例文件系统架构图

第九部分: 总结与最佳实践

9.1 Linux文件操作核心要点回顾

通过对Linux文件操作机制的深入分析, 我们可以总结出以下核心要点:

  1. 1. 层次化设计: VFS作为抽象层, 统一了不同文件系统的接口
  2. 2. 一切皆文件: 统一的文件模型简化了系统设计
  3. 3. 页缓存优化: 智能缓存策略极大提高了I/O性能
  4. 4. 异步操作: 现代Linux通过多种机制支持高效异步I/O
  5. 5. 可扩展性: 模块化设计支持新文件系统的轻松集成

9.2 性能优化建议表

场景
优化建议
预期效果
大量小文件
使用tmpfs或调整inode缓存
减少磁盘寻道时间
大文件顺序读写
调整预读大小, 使用direct I/O
提高吞吐量
随机访问
使用noop/deadline调度器, SSD优化
降低延迟
高并发访问
调整文件描述符限制, 使用异步I/O
提高并发能力
内存不足
调整脏页比率, 优化交换策略
平衡内存使用

9.3 故障排查流程图

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-02-08 21:05:22 HTTP/2.0 GET : https://f.mffb.com.cn/a/462471.html
  2. 运行时间 : 0.352406s [ 吞吐率:2.84req/s ] 内存消耗:4,510.35kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=a038631293b9aaa6f5d1e46afb44e893
  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.000526s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000683s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.002532s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.003842s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000507s ]
  6. SELECT * FROM `set` [ RunTime:0.001582s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000623s ]
  8. SELECT * FROM `article` WHERE `id` = 462471 LIMIT 1 [ RunTime:0.017384s ]
  9. UPDATE `article` SET `lasttime` = 1770555922 WHERE `id` = 462471 [ RunTime:0.018758s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.001270s ]
  11. SELECT * FROM `article` WHERE `id` < 462471 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001720s ]
  12. SELECT * FROM `article` WHERE `id` > 462471 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001191s ]
  13. SELECT * FROM `article` WHERE `id` < 462471 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.056515s ]
  14. SELECT * FROM `article` WHERE `id` < 462471 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.157484s ]
  15. SELECT * FROM `article` WHERE `id` < 462471 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.021181s ]
0.353965s