当前位置:首页>Linux>生产环境惊魂一刻:搞不懂 Linux 软硬链接,差点删库跑路!

生产环境惊魂一刻:搞不懂 Linux 软硬链接,差点删库跑路!

  • 2026-04-02 05:44:35
生产环境惊魂一刻:搞不懂 Linux 软硬链接,差点删库跑路!

昨晚刚准备关机睡觉,手机突然疯狂震动,客户群里炸锅了,在群里喊:“糟了,磁盘空间满了,我删了个大日志文件,怎么空间还是没释放啊?服务要挂了!”

我心里咯噔一下,这场景太经典了。很多人玩了多年 Linux,甚至背下了 ln -s 的命令,但真到了生产环境遇到这种“灵异事件”,还是容易抓瞎。很多时候,你以为你删了文件,其实你只是删了个“门牌号”,房子还在那,甚至还在偷偷占着地儿。

今天咱们不整那些教科书式的定义,什么“软链接是快捷方式,硬链接是副本”,那种话说了跟没说一样。咱们来点真刀真枪的,结合我这些年在生产环境踩过的坑,把 Linux 的软链接和硬链接这事儿给唠透了。这不仅是原理问题,更是关键时刻能保命的技能。

先聊聊那个“吓人”的 Inode

要搞懂链接,咱得先往深了挖,挖到 Linux 文件系统的根儿上——Inode。

很多人看文件,就是看文件名。但在 Linux 眼里,文件名根本不重要,它只是个代号,甚至可以说是伪装。Linux 内核真正认的是 Inode(索引节点)。

你可以把 Inode 想象成一个人的身份证号。不管你改名叫“张三”还是“李四”,甚至你有个小名叫“二狗”,你的身份证号是不变的,系统通过身份证号找到你这个实体。在 Linux 里,每个文件都有一个唯一的 Inode 号,里面存着文件的元数据:权限、属主、大小、时间戳,以及最关键的——数据块的位置(也就是文件内容存在硬盘哪个角落)。

咱们随便找个文件看看,敲个 ls -i 命令:

ls -i test.log
6745 test.log

前面那个 6745 就是 Inode 号。系统读文件的时候,流程是这样的:先去目录里找到文件名 -> 文件名对应 Inode 号 -> 拿着 Inode 号去 Inode 表里找元数据 -> 根据元数据找到数据块 -> 读取内容。

搞懂这个,后面的软硬链接就好理解了。

硬链接:给文件安个“分身”

硬链接这名字听着挺硬核,其实原理简单得要命。

刚才说了,文件名只是个“马甲”。假设你有个文件叫 source.txt,它的 Inode 是 123。你给它创建一个硬链接 hard_link.txt,发生了什么?

其实就是在这个目录下,又登记了一条记录:hard_link.txt 也指向 Inode 123。

就这么简单。

你看,source.txt 和 hard_link.txt 指向的是同一个 Inode,也就是同一个物理数据块。它们是平起平坐的,不存在谁是主、谁是次。你可以理解为,一套房子(数据),本来只有一个门(文件名),现在你给它开了个后门(硬链接)。不管你从前门进还是后门进,看到的家具摆设都是一模一样的。

咱们实操一下,别光动嘴。

# 先创建一个源文件
echo
 "Hello, This is original data" > source.txt

# 创建硬链接

ln
 source.txt hard_link.txt

# 查看两个文件的 Inode 和属性

ls
 -li source.txt hard_link.txt

你会看到输出结果里,这两个文件的 Inode 号是一模一样的!而且注意看那个引用计数(权限后面的那个数字),原来应该是 1,现在变成了 2。

这时候,如果你手贱,把源文件 source.txt 给删了:

rm -f source.txt
cat
 hard_link.txt

你会发现,hard_link.txt 依然存在,而且内容完好无损!这就是硬链接最“硬”的地方:删掉一个文件名,只是把那个目录项删了,Inode 的引用计数减 1。只要计数不为 0,数据块就不会被标记为回收,文件就还在。

这有啥用?太有用了。以前我们要备份某个重要配置文件,很多新手喜欢 cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak。这有个问题,如果源文件变了,备份文件不会变,而且占双倍空间。

但如果你用硬链接:

ln /etc/nginx/nginx.conf /backup/nginx.conf.bak

这几乎不占额外空间(只是目录项多了个记录),而且如果你改了源文件,硬链接文件的内容也会同步变化,因为它们本质上是一回事。这就相当于给文件做了一个实时同步的“影子备份”。

不过硬链接有两个死穴,得记住了,不然容易翻车:

  1. 1. 不能跨文件系统(分区)。 你不能在 /dev/sda1 上给 /dev/sda2 的文件建硬链接。这就像你不能把 A 小区的门牌号挂到 B 小区的房子上,因为不同文件系统的 Inode 编号规则都不一样,会乱套。
  2. 2. 不能给目录建硬链接。 这个限制主要是为了防止文件系统出现死循环(环路)。试想一下,如果 /data/subdir 是 /data 的硬链接,你进去一层又是一层,永远出不来了。虽然系统内部用 . 和 .. 实现了类似功能,但用户层面是禁止的。

软链接:真正的“快捷方式”

软链接,也就是符号链接(Symbolic Link),这个大家可能用得更多。

如果说硬链接是给房子开了个后门,那软链接就是一张纸条,上面写着:“你要找的东西在隔壁那栋房子里”。

创建软链接要加 -s 参数:

ln -s source.txt soft_link.txt

这次我们再看 Inode:

ls -li source.txt soft_link.txt

你会发现,这两个文件的 Inode 号完全不同!soft_link.txt 是一个全新的文件,它有自己的 Inode,有自己的数据块。只不过它的数据块里存的内容很特殊,存的是 source.txt 的路径字符串。

这就导致了一个现象:软链接文件的大小,通常就是源文件路径的字符长度。

软链接的特点非常鲜明:

  1. 1. 它是独立的文件。 删了源文件,软链接就变成了“死链”,也就是断了的指针。你再 cat soft_link.txt,系统会告诉你“No such file or directory”。因为它拿着纸条去找房子,发现房子已经被拆了。
  2. 2. 可以跨文件系统。 因为它存的是路径,路径是字符串,跟分区没关系。
  3. 3. 可以对目录创建。 这点太常用了。比如你的网站资源目录 /var/www/html/uploads 满了,你要把数据迁移到新挂载的大磁盘 /data/uploads,你可以这样做:
    mv /var/www/html/uploads /data/uploads
    ln
     -s /data/uploads /var/www/html/uploads

    程序根本感知不到变化,它还以为文件在 /var/www/html/uploads 下,其实已经被软链接拐跑了。这在扩容场景下简直是神器。

那个“删了文件空间不释放”的坑

回到文章开头那个小伙子的惊魂时刻。

为什么 rm -f 删了文件,df -h 看空间还是满的?

这通常是因为,你删除的文件,被某个进程打开了。咱们刚才说了,硬链接计数为 0 时,文件数据才会被回收。但如果一个文件被进程打开,它的引用计数虽然可能因为文件名被删而减少了,但进程手里还攥着这个文件的句柄(File Handle),也就是 Inode 还在被引用。

这种状态下,文件名在目录里看不到了(你以为删了),但 Inode 和数据块还在,进程还在往里写数据。这就是所谓的“幽灵文件”。

怎么抓出这个鬼?

用 lsof 命令,这可是运维神器:

lsof | grep deleted

你会看到类似这样的输出:

python    12345 root    1u      REG              253,1  1073741824     1234 /var/log/big.log (deleted)

看到了吧?那个 (deleted) 标记说明文件已经被删了,但进程号 12345 的 Python 程序还死死抓着那个 Inode,占着 1G 的空间。

怎么解决?

如果是无关紧要的日志进程,直接重启进程就行,句柄释放,空间立马回收。
如果是不能停的服务,那就有点麻烦了。在 /proc 目录下有奇招。找到进程 PID(比如 12345),进到 /proc/12345/fd 目录,找到那个文件描述符(比如 1),然后想办法清空它,或者通过 gdb 强制关闭句柄,但这操作风险极大,搞不好服务就崩了。最稳妥的,还是找开发改代码,加个日志切割(logrotate),别让进程一直死占着文件句柄。

这也提醒我们,生产环境清理大日志文件,千万别直接 rm。最好用 echo > filename 清空内容,或者用 logrotate 工具。直接 rm 是一种很粗暴且容易出事的行为。

生产环境实战:版本切换的“黑科技”

软链接在运维部署里,还有个超级经典的用法:版本回滚。

以前我们发版,那是真的“惊心动魄”。把旧的代码包改名 web_v1.0,上传新包 web_v1.1,解压覆盖。一旦新版本有 Bug,赶紧把旧包再解压回来。这一来一回,几分钟过去了,用户那边早就投诉电话打爆了。

后来学聪明了,用软链接做版本管理。

目录结构大概是这样的:

/var/www/
├── releases
│   ├── v1.0
│   └── v1.1
└── current -> /var/www/releases/v1.0

我们的 Nginx 或者应用配置里,指向的永远是 /var/www/current 这个目录。

要发布 v1.1 版本了,先把代码上传到 releases/v1.1,配置好环境。一切准备就绪,执行一条命令:

ln -snf /var/www/releases/v1.1 /var/www/current

注意这个 -n 和 -f 参数,-f 是强制覆盖,-n 是把目标当做普通文件处理(防止链接指向目录时出错)。这一瞬间,应用就切到了新版本。

如果发现 Bug,立马回滚:

ln -snf /var/www/releases/v1.0 /var/www/current

秒级回滚!根本不需要等文件复制解压。这就是软链接在生产环境最优雅的应用之一。

软硬链接的“混战”:到底用哪个?

讲了这么多,到底什么时候用软链接,什么时候用硬链接?

其实也没那么纠结。

选软链接的场景:
绝大多数情况,你都应该用软链接。

  • • 需要跨分区链接文件时。
  • • 需要链接目录时。
  • • 需要像 Windows 快捷方式一样,方便管理路径很长或者经常变动的文件时。
  • • 做版本切换、动态指向时。

选硬链接的场景:

  • • 防误删。 比如某个极其重要的配置文件,你可以给它建个硬链接藏在别的目录里。万一哪天手抖删了源文件,硬链接还在,数据没丢。
  • • 节省空间且同步更新。 同一份文件需要在多个地方出现,且不想占双倍空间。
  • • 文件备份的特殊需求。 比如快照技术,底层很多就是利用硬链接原理(Copy-on-Write)。

有个小细节要注意,很多人分不清 ln 和 ln -s 的参数顺序。老记不住谁是源、谁是目标。

其实很简单,跟 cp 命令是一样的逻辑:ln 源文件 目标文件

如果你写成 ln target source,那就搞反了,有时候会报错“文件已存在”,有时候会创建出奇怪的东西。记不住的时候,就想想复制命令怎么敲,cp a b,把 a 复制到 b,链接也是把 a 链接到 b。

再深入一点:为什么硬链接不能跨文件系统?

这个问题面试常问,咱们也顺带说一下。

每个文件系统(分区),就像是一个独立的“国家”。每个国家都有自己的身份证号(Inode)编号规则。

在 A 分区,Inode 100 可能是 a.txt。在 B 分区,Inode 100 可能是 b.txt

如果你能在 A 分区建一个硬链接指向 B 分区的文件,那 A 分区的目录项里就会记录:“嘿,这个文件指向 Inode 100”。但当内核去 A 分区的 Inode 表里找 100 号节点时,它找到的是 A 分区的数据,根本不是 B 分区的那个文件。这就乱套了。

硬链接的本质是“同一个 Inode 的不同名字”,既然 Inode 编号在不同分区不唯一,那自然就不能跨分区了。

而软链接是存路径字符串的,它不管 Inode,它告诉系统:“你去 B 分区找那个文件”,所以软链接可以跨文件系统。

总结一下

今天咱们从半夜报警聊起,扯到了 Inode,又把软硬链接翻了个底朝天。

  • • 硬链接是实体的分身,同一个 Inode,删了源文件不影响硬链接,不能跨分区,不能链目录。
  • • 软链接是路径的指针,独立的 Inode,删了源文件就失效,灵活好用,能跨分区能链目录。
  • • 生产排错时,记得 lsof | grep deleted 查看那些被删了但还被占用的文件,那是磁盘空间的隐形杀手。
  • • 部署发布时,善用软链接做版本切换,能让你在故障面前从容不迫。

Linux 的哲学就是“一切皆文件”,而链接机制,让这个文件系统变得更加立体和灵活。别看平时好像用不上,真到了磁盘爆满、服务异常、紧急回滚的时候,这些知识点就是你手里的救命稻草。

运维这行,光背命令没用,得懂背后的原理。懂了原理,遇到问题你才能推导出原因,而不是在那瞎猜。

希望这篇文章能帮大家把软硬链接彻底搞懂。下次再遇到删文件空间不释放的问题,别慌,先看看是不是硬链接计数没归零,或者进程句柄没释放。

文章写了不少,手也有点酸了。如果觉得这些内容对你有帮助,别藏着掖着,点个“在看”,或者转发给你们公司的开发同学,让他们也知道删日志文件不是那么简单的事儿!

公众号:运维躬行录
个人博客:躬行笔记

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-04-03 18:42:00 HTTP/2.0 GET : https://f.mffb.com.cn/a/483953.html
  2. 运行时间 : 0.102806s [ 吞吐率:9.73req/s ] 内存消耗:4,635.60kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=4a26df6c0368fa8c1c08f65d0806a23a
  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.000509s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000663s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000691s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000274s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000537s ]
  6. SELECT * FROM `set` [ RunTime:0.000283s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000550s ]
  8. SELECT * FROM `article` WHERE `id` = 483953 LIMIT 1 [ RunTime:0.000441s ]
  9. UPDATE `article` SET `lasttime` = 1775212920 WHERE `id` = 483953 [ RunTime:0.008522s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.000315s ]
  11. SELECT * FROM `article` WHERE `id` < 483953 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000677s ]
  12. SELECT * FROM `article` WHERE `id` > 483953 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000545s ]
  13. SELECT * FROM `article` WHERE `id` < 483953 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.004009s ]
  14. SELECT * FROM `article` WHERE `id` < 483953 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.007903s ]
  15. SELECT * FROM `article` WHERE `id` < 483953 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.004730s ]
0.104420s