当前位置:首页>Linux>从内核视角,看Linux文件读写过程

从内核视角,看Linux文件读写过程

  • 2026-06-29 05:43:42
从内核视角,看Linux文件读写过程
今天咱们来聊一个「看似简单、实则硬核」的——Linux 文件读写全过程

我们每天敲 cat file.txt、用 fread() 读文件、或者 fwrite() 写日志,有没有思考过为什么读写这么快?为什么改了文件不立刻落盘?

很多朋友觉得读写过程难搞懂,什么“系统调用”、“虚拟文件系统”、“页缓存”听着就头大,其实只要顺着“用户操作→内核响应→硬件执行”的逻辑拆解,就能轻松搞懂文件读写的底层原理。

今天我们从内核文件系统的角度,拆解文件读写过程,搞懂“我们写的内容,到底是怎么存到磁盘里的”。

Part1程序为啥不能直接操作文件?

我们先复盘下操作系统的核心作用——“保护硬件”和“给应用程序提供接口”。

电脑的硬件资源(磁盘、内存、CPU)是有限的,要是每个应用程序都能直接操作硬件,很容易出现冲突(比如两个程序同时写一个文件,会导致内容错乱)。

为了防止普通程序搞崩系统,CPU 设计了两种运行模式::
  • 用户模式:应用程序(比如记事本、浏览器)运行的模式,权限很低,不能直接操作硬件(比如读磁盘、写磁盘);

  • 内核模式:操作系统内核运行的模式,权限最高,能直接操作所有硬件,处理所有危险操作(比如I/O读写、修改内存地址)。

系统调用(syscall) 就是连接两者的唯一合法通道
进程的虚拟地址空间划分为「用户空间」和「内核空间」。用户空间存的是我们写的应用程序代码(比如记事本的代码)和数据(比如我们编辑的文本),内核空间存的是操作系统内核的代码和数据。两者都是“虚拟地址”,最终都会映射到实际的物理内存(相当于“虚拟门牌号”对应“实际住址”)。

而我们今天的核心——文件读写,就是最典型的“系统调用场景”:应用程序(用户态)发起读写请求,内核(内核态)帮忙完成实际的磁盘操作,再把结果返回给应用程序。

Part2虚拟文件系统(VFS)

Linux 支持 NTFS、ext4、FAT、Btrfs 等各种文件系统。假如每个文件系统都长得不一样,用户态程序岂不是要写一堆适配代码?——这显然不现实。

于是Linux内核搞了个“中间层”——虚拟文件系统(VFS),它的作用就像“翻译官”:一边给应用程序提供“统一的文件操作接口”(不管你是哪种文件系统,应用程序都用一套方法操作),另一边对接不同的底层文件系统,把应用程序的请求“翻译”成底层文件系统能听懂的指令。

简单说,应用程序操作文件时,不用管底层是NTFS还是ext4,只需要找VFS;VFS再根据底层文件系统的类型,调用对应的逻辑完成操作——这就是“统一文件系统视图”的核心。

它在用户进程和具体文件系统之间加了一层抽象层,给所有人提供一套统一的接口(open/read/write/mmap 等),底层再自动适配不同的文件系统。

VFS 主要由以下6个核心模块组成(超级实用,建议记下来):

  1. 超级块(super_block):相当于某个文件系统的“身份证+说明书”,记录着这个文件系统的所有核心信息(比如文件系统大小、类型、挂载点),是VFS操作该文件系统的“基础参考”。任何对文件系统的元数据修改(比如创建文件、删除文件),都会同步更新超级块,而且超级块会常驻内存,避免频繁读磁盘。

  2. 目录项模块:负责“解析文件路径”。比如我们要找 /home/foo/hello.txt,目录项模块就会从根目录(/)开始,一步步解析“home”“foo”这两个目录,最后定位到“hello.txt”这个文件。它的内部是树形结构,就像我们电脑里的“文件夹层级”,操作系统找文件,本质就是遍历这个目录树。

  3. inode模块:文件的“唯一身份证”,一个文件对应一个inode。它记录着文件的核心信息(比如文件大小、创建时间、权限),最关键的是——通过inode能找到文件在磁盘扇区的具体位置(相当于“文件的实际住址”)。另外,inode还能关联到后面要讲的address_space模块,快速判断文件数据是否已经缓存到内存。

  4. 打开文件列表模块:记录内核中所有已经打开的文件。我们用“打开文件”操作时,内核会创建一个“文件句柄”(struct file结构体),这个结构体就存在这个列表里,记录着文件的打开状态(比如只读、可写)、当前读写位置等参数。

  5. file_operations模块:相当于“文件操作工具箱”,里面存着所有能对文件执行的系统调用函数(比如open、read、write、close)。每个打开的文件(打开文件列表里的一个项),都会关联这个模块,从而实现对文件的各种操作。

  6. address_space模块:VFS和页缓存的“桥梁”,记录着一个文件在内存中已经缓存的物理页。简单说,它就是“文件数据在内存中的索引”,后面讲页缓存时会重点说,这里先记住:它关联着文件(inode)和内存缓存(页)。

这些模块之间通过各种指针互相链接,形成一张“关系网”。进程通过文件描述符(fd)找到 struct file,再顺着指针找到 dentry → inode → address_space,最终完成操作。

我们的应用程序(进程),其实是通过“文件描述符”和VFS打交道的:

  1. 每个进程都有一个“进程描述符”(task_struct),里面有一个指针指向“文件描述符表”(files_struct);

  2. 文件描述符表,本质是一个“指针列表”,每个指针都指向VFS打开文件列表里的一个文件(file结构体)——我们平时说的“文件描述符0(标准输入)、1(标准输出)、2(标准错误)”,就是这个列表的索引;

  3. 进程要操作文件时,只需要通过文件描述符,找到对应的file结构体,再调用file_operations里的函数,就能完成读写操作。

这儿再唠两个关键细节:① 多个进程可以共享同一个打开的文件(比如父进程和子进程),它们的文件描述符会指向同一个file结构体;② 一个进程可以多次打开同一个文件,生成多个文件描述符,每个描述符对应不同的file结构体,但这些结构体最终都会指向同一个inode(因为是同一个文件,inode唯一)。

Part3提速关键:I/O缓冲区

磁盘的读写速度,比内存慢好几个数量级(内存读写毫秒级,磁盘读写秒级)。如果每次读写都直接访问磁盘,程序早就卡死了。——这就是“缓冲区”存在的意义,把经常用的数据提前缓存在内存里。

注意两个容易混淆的概念:

  • Cache(高速缓存):CPU 和内存之间的缓冲,加速“读”;

  • Buffer(I/O 缓冲):内存和磁盘之间的缓冲,既缓冲“读”,也缓冲“写”。

Linux 2.6 之后,Page Cache(页缓存) 彻底取代了老的 Buffer Cache,成为主流。它以内存页(4KB)为单位管理,比老的“块”粒度更细、性能更高

  • Buffer Cache(块缓存):以“文件系统块”为单位缓存(比如ext4的块大小通常是4KB),主要用于“块设备”的I/O操作(比如直接读写磁盘块);

  • Page Cache(页缓存):以“内存页”为单位缓存(Linux中内存页大小通常是4KB,和块大小一致,但逻辑上更高层),主要用于“文件”的I/O操作,是目前Linux内核中最核心的缓存机制。

对进程来说,不管是Buffer Cache还是Page Cache,都是“透明的”——进程不需要关心数据是存在哪个缓存里,只需要发起读写请求,内核会自动处理缓存逻辑。

Part4核心缓存:Page Cache

前面提到,Page Cache(页缓存) 是文件和内存之间的缓冲区核心逻辑是通过3个关键结构,将“文件”映射到“内存页”

  1. struct page:表示一个物理内存页,相当于“内存中的一个存储单元”。它有3个关键参数:① flags(标志位):记录这个页是否被修改(脏页)、是否正在写回磁盘;② mapping:指向address_space,说明这个页是某个文件的缓存页;③ index:记录这个页在文件中的偏移量(相当于“这个页对应文件的哪一部分内容”)。

  2. inode:前面说过,inode记录着文件的所有块号,通过文件的读写偏移量,就能快速定位到对应的磁盘块号和扇区号;同时,inode还关联着address_space,能快速找到文件的缓存页。

  3. address_space:作为“桥梁”,一边关联inode(找文件),一边关联Page Cache的基数树(找缓存页)。通过它,内核能快速实现“文件偏移量→内存页→磁盘块”的映射。

一个文件对应一个 inode → 一个 address_space → 一棵页缓存树。通过 offset → 页偏移 → 文件块号 → 磁盘扇区 这条路径,内核能极快定位数据在不在内存。

Part5文件读写的完整流程拆解

我们点击“打开文件”“保存文件”时,内核到底在做什么?

分“读文件”和“写文件”两步。

5.1、读文件流程

以“打开hello.txt”为例:

  1. 应用程序(比如记事本)调用库函数(比如fopen),向内核发起“读文件”请求;

  2. 内核通过“文件描述符”,定位到VFS中对应的“打开文件列表项”(file结构体);

  3. 调用file_operations里的read()函数,开始处理读请求;

  4. read()函数通过file结构体,找到对应的目录项,解析文件路径,最终找到文件的inode;

  5. 根据我们要读取的“文件偏移量”(比如从第0个字节开始读),计算出需要读取的内存页;

  6. 通过inode找到对应的address_space,访问Page Cache的基数树,查找对应的缓存页:        

    1. 【缓存命中】:如果缓存页存在,直接从内存中读取数据,返回给应用程序,读操作结束(这就是第二次打开文件更快的原因);

    2. 【缓存缺失】:如果缓存页不存在,内核会产生“页缺失异常”,创建一个新的缓存页,然后通过inode找到文件对应页的磁盘地址,从磁盘读取数据,填充到缓存页;之后再重新查找缓存页(此时命中),返回数据。

  7. 应用程序拿到数据,显示在界面上,读文件流程完成。

5.2、写文件流程

以“修改hello.txt并保存”为例,写文件的前5步,和读文件完全一致,重点差异在“缓存处理”和“脏页写回”:

  1. 前5步(发起请求→定位file结构体→调用write()→找到inode→计算偏移量),和读文件一致;

  2. 通过address_space查找对应的缓存页:        

    1. 【缓存命中】:直接将修改后的内容,写入到缓存页中,写操作暂时结束(注意:此时数据只在内存缓存中,还没写到磁盘);

    2. 【缓存缺失】:产生页缺失异常,创建缓存页,从磁盘读取对应页的数据填充缓存,然后再将修改后的内容写入缓存页。

  3. 被修改的缓存页,会被标记为“脏页”(相当于“待写入磁盘的临时数据”);

  4. 脏页需要写回磁盘,有两种方式:

    1. 手动触发:调用sync()或fsync()系统调用,强制将脏页写回磁盘(比如我们手动点击“保存”,本质就是触发了fsync());

    2. 自动触发:内核的pdflush进程(或类似进程)会定时扫描脏页,将其写回磁盘,避免缓存占满内存。

  5. 注意:脏页在写回磁盘期间,会被“上锁”,其他写请求会被阻塞,直到写回完成、锁释放——这就是为什么有时候保存文件后,立刻拔掉U盘会提示“文件正在使用”。

看到这儿,想必你已经明白文件读写的核心逻辑,简单来说其实就是“三层联动”:

1. 应用程序(用户态)发起请求,通过系统调用“求助”内核;

2. 内核通过VFS,统一处理不同文件系统的请求,找到文件对应的inode和缓存;

3. 通过Page Cache缓存数据,减少磁盘I/O,提升速度,最终完成读写操作。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-04 09:36:32 HTTP/2.0 GET : https://f.mffb.com.cn/a/487805.html
  2. 运行时间 : 0.104551s [ 吞吐率:9.56req/s ] 内存消耗:5,164.74kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=7b98f42f69a2e82ea1296eae26251346
  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.000555s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000830s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000345s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000242s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000447s ]
  6. SELECT * FROM `set` [ RunTime:0.001427s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000499s ]
  8. SELECT * FROM `article` WHERE `id` = 487805 LIMIT 1 [ RunTime:0.008622s ]
  9. UPDATE `article` SET `lasttime` = 1783128992 WHERE `id` = 487805 [ RunTime:0.005142s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.000266s ]
  11. SELECT * FROM `article` WHERE `id` < 487805 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000497s ]
  12. SELECT * FROM `article` WHERE `id` > 487805 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000477s ]
  13. SELECT * FROM `article` WHERE `id` < 487805 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001142s ]
  14. SELECT * FROM `article` WHERE `id` < 487805 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.003234s ]
  15. SELECT * FROM `article` WHERE `id` < 487805 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.007645s ]
0.106522s