当前位置:首页>Linux>容器为什么看起来像一台独立机器:把 Linux 里的“视图隔离”讲明白

容器为什么看起来像一台独立机器:把 Linux 里的“视图隔离”讲明白

  • 2026-07-02 10:38:33
容器为什么看起来像一台独立机器:把 Linux 里的“视图隔离”讲明白

上一篇我们先把 Docker 的问题意识和历史脉络立住了。

我们提到过一个很关键的判断:

容器本质上还是进程,不是轻量版虚拟机。

这句话很重要,但它也会立刻带来另一个问题:

既然容器本质上还是宿主机上的进程,那它为什么会“看起来像一台独立机器”?

为什么进入容器之后,你会感觉:

  • 它有自己的主机名
  • 它像是有自己的一套进程树
  • 它像是有自己的一套文件系统
  • 它像是有自己的网络环境
  • 它和宿主机、和其他容器之间像是隔开了

如果不把这个问题讲清楚,Docker 就始终像黑盒。你会知道它好用,但不知道它为什么能这样工作。

这一篇我们先把容器“像一台机器”的第一层原因讲清楚:

Linux 可以让不同进程看到彼此不同的系统世界。

这个能力,在 Linux 里主要靠的是一组机制:namespace

一、容器的“独立感”,本质上是视图被隔离了

很多人第一次理解容器时,会下意识把它想成“系统里又装了一套小 Linux”。

但从内核视角看,不是这样。

更准确地说,宿主机内核并没有真的重新造出好几台机器,也没有在每个容器里都复制出一套完整操作系统。它做的事情更像是:

同样是一台宿主机、同样是一份内核,但让不同进程看到不同的系统视图。

这里“系统视图”这个词很关键。

你平时在命令行里看到的很多东西,其实都不是“绝对真实世界”,而是内核在当前上下文里给你呈现出来的那一层视图。比如:

  • 你看到哪些进程
  • 你的 hostname 是什么
  • 你的根目录 / 指向哪里
  • 你有哪些网络接口
  • 你能访问哪些进程间通信对象

如果这些视图都能按进程或进程组被分开,那么进程自然就会产生一种“我像在独立环境里运行”的感觉。

所以先记一句:

容器的独立感,首先不是来自重新造机器,而是来自重新组织进程看到的世界。

二、namespace 到底是什么

先用最通俗的话讲:

namespace 就是 Linux 给进程加的一层“视图边界”。

加入同一个 namespace 的进程,更容易互相看见彼此;不在同一个 namespace 里的进程,看到的世界可能就不一样。

再准确一点说:

namespace 是 Linux 内核提供的一种隔离机制,用来把一些全局系统资源拆成多个彼此隔离的实例。这样一来,不同进程就可以分别拥有不同的资源视图。

这里“资源”不只是文件,也包括:

  • 主机名
  • 进程编号空间
  • 挂载点视图
  • 网络协议栈和设备
  • IPC 对象
  • 用户和权限映射

所以 namespace 不是一个单独功能,而是一组机制的统称。

你可以把它理解成:

namespace 不是创建新机器,而是把同一台机器上的“全局世界”切成多份局部视图。

如果是第一次接触容器原理,一般先从 UTS namespace 开始。

因为它最直观。

UTS namespace 主要隔离的是:

  • hostname
  • domainname

也就是说,它决定的是一个进程看到的“主机名视图”。

为什么这件事重要?

因为“我在一台什么机器上”的最直观感受之一,就是 hostname。你一进容器,shell 提示符上经常会出现一个和宿主机完全不同的名字,这就是最直接的“独立感”来源之一。

可以在 Linux 上直接做实验。

先看宿主机当前主机名:

hostname

然后创建一个新的 UTS namespace 并进入一个 shell:

sudo unshare --uts bash

你会发现,在这个 shell 里看到的主机名已经变成了 my-container。

但如果你另开一个宿主机终端再执行:

hostname

通常还是原来的宿主机名字。

这说明什么?

说明改的不是“全局唯一主机名”,而是当前这个 UTS namespace 里的 hostname 视图。

所以 UTS namespace 最适合用来建立第一层直觉:同一台宿主机上的不同进程,确实可以看到不同的“机器名”。

这也是容器像机器的第一层表象。

三、PID namespace

如果说 UTS namespace 只是“改了名字”,那 PID namespace 就是让容器真正开始“像一套独立系统”的关键机制之一。

它隔离的是:

进程号空间,也就是进程看到的进程树。

先说直白点的意思。

正常情况下,宿主机上的进程能看到整台机器上、自己有权限看到的大量进程。你执行 ps aux,看到的往往是整机范围里的许多任务。

但容器不希望这样。因为如果一个容器能直接看到宿主机全部进程,那它的“边界感”就弱很多,也更不安全。

PID namespace 的作用就是:

让进程只看到自己所在那套 PID 空间里的进程。

也就是说,在容器里执行 ps,你往往只会看到容器自己的那批进程,而不是整台宿主机的进程树。

这时容器里通常会有一个很重要的现象:

容器里的第一个进程,往往会看到自己像是 PID 1。

为什么这件事重要?

因为在传统 Linux 系统里,PID 1 往往有特殊地位,它是 init/systemd 那条线上的起点。容器里的“主进程”如果在自己的 PID namespace 里是 1,就会更像“这就是一个独立小系统的入口进程”。

可以做个实验。

先尝试执行:sudo unshare --pid --fork bash

进入后再执行:ps aux以及:echo $$

你会发现,这个 shell 里看到的进程数量会明显少很多,而且当前 shell 的 PID 也可能变得很小。

这里为什么常常要配合 --fork

因为 PID namespace 的生效方式和当前进程、子进程有关。很多时候,为了让新的 shell 真正处在新的 PID 视图里,需要 fork 一个新进程进去。

这一点后面你如果手写 Docker,用 clone() 或相关调用时会更明显。

所以 PID namespace 可以用一句话概括:

它让容器像是拥有自己的一套进程宇宙。

四、mount namespace

到这里,主机名和进程树都能隔离了,但还不够。

因为一个进程对系统最深的感觉,除了“我是谁”“我能看到谁”,还有一个极关键问题:

我脚下这棵目录树到底是谁的?

也就是:

  • 我看到的 / 是什么
  • 我看到的 /proc/sys/dev 是什么
  • 我挂载和卸载一个文件系统,会不会影响别人

这类问题,主要就和 mount namespace 有关。

mount namespace 隔离的是:

挂载点视图,也就是进程看到的文件系统挂载结构。

先解释一下什么叫“挂载点视图”。

Linux 里的文件系统不是一整块天然长在一起的。很多目录树,其实是通过挂载组合起来的。比如一个新的文件系统挂载到某个目录下,那个目录下面的内容视图就变了。

如果所有进程都共享完全相同的挂载视图,那么一个容器里的挂载操作就可能直接影响宿主机或其他容器。这显然不行。

所以 mount namespace 的意义是:

让不同进程组可以拥有不同的挂载树。

这样容器里看到的根目录 /、挂载结构、/proc 等内容,就可以和宿主机分开组织。

这也是为什么容器能拥有自己的一套 rootfs 视图。

你可以先在宿主机查看挂载信息,比如执行 mount | head,或者执行 cat /proc/self/mounts | head

然后再尝试新建一个 mount namespace:sudo unshare --mount bash

在新 shell 里再看挂载信息。后续如果再配合 mount 操作和更完整的 rootfs 组织,就会更明显地看到:

这棵目录树已经不再是宿主机原样照搬。

所以 mount namespace 解决的是:

容器为什么能有自己的一套文件系统视图。

五、network namespace

如果说 UTS 解决“这台机器叫什么”,PID 解决“这台机器里有哪些进程”,mount 解决“这台机器看到的目录树是什么”,那 network namespace 解决的就是:

这台机器的网络世界是什么样。

它隔离的是:

  • 网络设备
  • IP 地址
  • 路由表
  • 端口空间
  • 防火墙相关网络状态等

这就是为什么一个容器里可以有自己的一张 eth0、自己的 IP、自己的路由规则,而不会直接和宿主机完全混成一锅。

换句话说,network namespace 让一个进程组感觉自己像拥有独立网络栈。

你可以先在宿主机看网络接口,比如执行 ip addr,或者执行 ip link

然后创建新的 network namespace 并进入:sudo unshare --net bash

在新的 shell 里再执行 ip link,很多环境下你会发现,接口视图会发生明显变化,通常不会再直接看到宿主机那套完整网络接口配置。

当然,单纯 unshare --net 之后,这个新的 network namespace 可能还比较“空”。因为真实容器运行时通常还会结合很多后续网络配置,比如:

  • veth pair
  • bridge
  • NAT
  • iptables / nftables
  • CNI 或 Docker 自己的网络配置逻辑

也就是说,network namespace 只负责:

隔离网络视图。

它并不自动替你把网络全配好。

所以你可以把它理解成:

network namespace 提供了独立网络空间的骨架,真正让容器联网,还需要后续网络配置把它接起来。

六、IPC namespace

Linux 里进程之间不是只能靠 socket 和文件通信。还有一类传统 IPC 资源,比如:

  • System V 消息队列
  • 信号量
  • 共享内存对象

如果这些对象完全全局共享,那么不同容器之间就容易互相干扰。

所以 Linux 还有 IPC namespace,用来隔离这类进程间通信对象视图。

它解决的是:

让不同容器里的进程,不随便共享和碰撞彼此的 IPC 资源。

这个 namespace 在日常直觉上不像 PID 和网络那么强烈,因为你平时不是天天肉眼看消息队列和信号量。但从隔离完整性上,它很重要。

你可以在宿主机看 IPC 对象,比如执行:ipcs

如果进入不同 IPC namespace,再看这类对象,看到的集合可能就不同了。

所以 IPC namespace 的意义可以简单记成:

把“看不见但真实存在的进程通信资源”也切开。

七、user namespace

上面几种 namespace 主要是在改“你看到什么”。

但还有一个更敏感的问题:

你是谁?你的权限怎么算?

这就涉及 user namespace。

它隔离的是用户 ID、组 ID 及其映射关系。

这件事初看比较抽象,但它很重要,因为容器里经常会出现一种现象:

  • 容器里看到自己像 root
  • 但宿主机上它并不真的拥有等价的 root 权限

这背后就和用户命名空间及权限映射有关。

user namespace 的核心价值是:

把容器内的身份视图和宿主机上的真实权限边界拆开。

这对安全非常重要。否则容器里一个“看起来是 root 的进程”,如果直接等价于宿主机 root,风险就太高了。

这一块比前面几种更容易牵涉到安全模型和 uid/gid 映射,初学时不一定要一口吃透。先记住它解决的问题就够了:

容器里的“我是 root”,不一定等于宿主机上我真是最高权限。

八、namespace 到底在解决什么

如果把上面这些机制放在一起看,就很清楚了。

Linux 不是为容器单独发明了一个“容器模式”,而是通过多种 namespace,把进程周围的世界一块块切开:

  • UTS namespace:隔离主机名视图
  • PID namespace:隔离进程号和进程树视图
  • mount namespace:隔离挂载点和文件系统视图
  • network namespace:隔离网络设备和网络栈视图
  • IPC namespace:隔离消息队列、信号量等 IPC 资源视图
  • user namespace:隔离身份与权限映射视图

所以容器之所以像一台机器,不是因为内核重新造了一台机器,而是因为:

进程周围和“机器感”有关的那些关键视图,都被分开了。

九、相关命令:先建立一个最小工具箱

如果你准备继续写容器原理,或者后面手写极简 Docker,下面这些命令建议先熟。

1. 观察进程和系统视图

常用命令:

  • ps aux
  • ps -ef
  • top
  • pstree
  • hostname
  • uname -a

主要用途:

  • 看当前系统里有哪些进程
  • 看 hostname
  • 看系统基本信息

2. 观察文件系统和挂载

常用命令:

  • pwd
  • ls /
  • mount
  • cat /proc/self/mounts
  • findmnt

主要用途:

  • 看当前目录和根目录视图
  • 看挂载点结构

3. 观察网络视图

常用命令:

  • ip addr
  • ip link
  • ip route
  • ss -lnt

主要用途:

  • 看网卡、IP、路由和监听端口

4. 观察 IPC 资源

常用命令:

  • ipcs

主要用途:

  • 看消息队列、共享内存、信号量等对象

5. 最关键的实验入口:unshare

可以分别尝试:

  • sudo unshare --uts bash
  • sudo unshare --pid --fork bash
  • sudo unshare --mount bash
  • sudo unshare --net bash

也可以组合使用:

  • sudo unshare --uts --pid --mount --net --fork bash

这些命令的意义,不是让你“直接做出完整 Docker”,而是帮你亲手感受到:

原来一个普通 shell,真的可以被放进一套不同的系统视图里。

这一点非常重要。

这里有一个必须强调的边界:只有 namespace,还不等于完整容器

讲到这里,很多人会产生一个误解:

“既然把这些 namespace 一开,不就已经是 Docker 了吗?”

还不是。

因为 namespace 主要解决的是:

你看见什么。

但完整容器还至少要继续解决两类问题。

第一,资源边界。

如果只是让视图变了,但一个容器里的进程仍然可以把 CPU、内存、I/O 都吃满,那容器就没有真正的资源治理能力。

这一部分,主要要靠 cgroups。

第二,文件系统和运行环境组织。

只开了 namespace,并不自动等于你已经拥有了一套整理好的 rootfs、镜像层、容器启动流程。

这一部分,后面会牵涉到:

  • rootfs
  • mount 组织
  • /proc 挂载
  • 镜像分层
  • entrypoint / init 进程
  • 网络接入

所以 namespace 是容器“像机器”的第一层基础,但不是全部。

十、为什么这一篇对后面“手写 Docker”特别关键

如果你后面准备自己手写一个最小 Docker,最先遇到的往往不是 Dockerfile,不是镜像仓库,而是这些很底层的动作:

  • 创建新的 namespace
  • 给容器换 hostname
  • 让它看到自己的 PID 空间
  • 准备新的文件系统视图
  • 给它挂上 /proc
  • 让它在自己的网络环境里启动起来
  • 最后再执行目标进程

也就是说,真正“写容器”的起点,不是学会更多 Docker 命令,而是先把这些 Linux 原生机制拆明白。

容器不是一个神秘盒子。

它首先是一组被重新组织了视图和边界的进程。

  • 容器本质上还是进程,但它看到的系统世界可以和宿主机不同。
  • namespace 的核心作用,是把全局系统资源切成多份隔离视图。
  • UTS、PID、mount、network、IPC、user 这些 namespace 一起构成了容器的“独立感”。
  • namespace 让容器“像一台机器”,但还没有解决资源边界和完整运行时组织。

如果你对这条线感兴趣,欢迎继续关注后续内容。也欢迎加入芯航线交流群,后面我们会继续把 Docker 这条线往底层拆,直到自己手写一个最小可运行版本。

芯航线主理人胡同学:

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-04 06:44:38 HTTP/2.0 GET : https://f.mffb.com.cn/a/489844.html
  2. 运行时间 : 0.715756s [ 吞吐率:1.40req/s ] 内存消耗:5,004.97kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=0724d46ee1957504293350ece2a62c40
  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.000486s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000588s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.009804s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.011833s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001619s ]
  6. SELECT * FROM `set` [ RunTime:0.026598s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001559s ]
  8. SELECT * FROM `article` WHERE `id` = 489844 LIMIT 1 [ RunTime:0.041033s ]
  9. UPDATE `article` SET `lasttime` = 1783118678 WHERE `id` = 489844 [ RunTime:0.003863s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.000870s ]
  11. SELECT * FROM `article` WHERE `id` < 489844 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.016703s ]
  12. SELECT * FROM `article` WHERE `id` > 489844 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.050981s ]
  13. SELECT * FROM `article` WHERE `id` < 489844 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.160763s ]
  14. SELECT * FROM `article` WHERE `id` < 489844 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.226305s ]
  15. SELECT * FROM `article` WHERE `id` < 489844 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.055356s ]
0.719704s