当前位置:首页>python>动手时刻:Python 仿真 QKD 网络 (上) —— 搭建不完美的物理层

动手时刻:Python 仿真 QKD 网络 (上) —— 搭建不完美的物理层

  • 2026-01-11 21:37:48
动手时刻:Python 仿真 QKD 网络 (上) —— 搭建不完美的物理层

昨天,我们在云端俯瞰了宏大的 Q-SDN 网络架构。今天,我们要降落到地面,打开代码编辑器,开始干脏活累活了。

物理学家费曼曾说过:“What I cannot create, I do not understand.(我不能创造的,我就没真正理解。)”

你可能觉得你懂 BB84 协议了:不就是随机选基、比对、丢弃吗? 但当你真正试图用代码去模拟它时,你会遇到无数现实的问题:

  • 光子在信道里飞的时候,怎么模拟“噪声”?
  • Bob 选错基的时候,代码逻辑怎么写才能体现“50% 随机性”?
  • 最后的误码率(QBER)到底是怎么算出来的?

今天,我们将编写一套 QKD 仿真器。 我们将不再写几行简单的脚本,而是采用 面向对象 (OOP) 的正规工程思维,构建 Alice、Bob 和 Quantum Channel 三个核心类。

我们的目标是:模拟发送 10,000 个光子,经过有噪声的信道,完成筛选(Sifting),并统计出最终的误码率。

打开你的 IDE(VS Code / PyCharm / Jupyter),把昨天的环境准备好。Let's Code!


上帝视角 —— 系统架构设计

在敲下第一行代码之前,优秀的工程师都会先画图。 我们要构建的仿真器包含三个核心对象:

  1. QuantumChannel (量子信道):

    • 这是环境。它是“上帝”的地盘。
    • 它负责传输光子。
    • 关键特性:它是不完美的。我们要在里面加入noise_rate(噪声率),模拟光子在传输过程中发生比特翻转(Bit Flip)的情况。
  2. QNode (量子节点):

    • 这是一个父类。Alice 和 Bob 都是节点,他们有共性。
    • 共性:都需要选择基矢(Basis),都需要处理比特(Bit)。
  3. SimulationManager (仿真管理器):

    • 这是“主程序”。
    • 负责协调流程:Alice 发 -> Channel 传 -> Bob 收 -> 双方对基 -> 统计结果。


构建物理层 —— 充满噪声的信道

首先,我们来写最核心的“环境”——信道。 在真实的物理世界中,噪声来源很多(热噪声、暗计数、光纤双折射)。 在我们的仿真模型中,我们将其简化为 BSC 模型 (Binary Symmetric Channel,二进制对称信道): 即:光子有  的概率发生比特翻转(0变1,1变0),或者发生相位翻转(我们暂只模拟比特翻转)。

新建文件 qkd_sim_v1.py,写入以下代码:

import numpy as np

# ==========================================
# 0. 基础配置
# ==========================================
# 为了方便理解,我们定义常数
BASIS_Z = 0# 标准基 (+):对应 0°/90°
BASIS_X = 1# 对角基 (x):对应 45°/135°

classQuantumChannel:
"""
    模拟量子信道。
    职责:传输量子态,并引入噪声。
    """

def__init__(self, noise_rate=0.0):
        self.noise_rate = noise_rate
        print(f"[System] 信道初始化完毕。物理噪声率设定为: {noise_rate * 100}%")

deftransmit(self, photon_stream):
"""
        传输光子流。
        :param photon_stream: Alice 发出的光子列表 [{'bit':0, 'basis':1}, ...]
        :return: 到达 Bob 端的光子列表 (可能已发生翻转)
        """

        output_stream = []
        error_count = 0

for p in photon_stream:
# 复制一份光子数据,避免修改原数据(模拟光子离开 Alice)
            current_photon = p.copy()

# === 模拟噪声干扰 ===
# 生成一个 0~1 的随机数,如果小于噪声率,则发生翻转
if np.random.rand() < self.noise_rate:
# 比特翻转:0->1, 1->0
                current_photon['bit'] = 1 - current_photon['bit']
                error_count += 1

            output_stream.append(current_photon)

        print(f"[Channel] 传输完成。传输 {len(photon_stream)} 个光子,"
f"因噪声翻转了 {error_count} 个比特。")
return output_stream

代码解析: 这段代码虽然简单,但它模拟了通信中最本质的属性:不确定性np.random.rand() < self.noise_rate 这行代码,就是上帝掷出的那个骰子。在后续的过程中,Eve 的攻击也会在这里发生。


主角登场 —— Alice 与 Bob 的类设计

接下来,我们要定义 Alice(发送者)和 Bob(接收者)。 为了代码复用,我们先写一个父类 QNode

classQNode:
"""量子节点的基类"""
def__init__(self, name):
        self.name = name
        self.bits = []   # 存储比特
        self.bases = []  # 存储基矢

defclear_memory(self):
        self.bits = []
        self.bases = []

Alice:制备与发送

Alice 的任务是:生成随机比特,选择随机基矢,然后把它们打包成光子发出去。

classAlice(QNode):
defprepare_photons(self, n_photons):
"""
        制备 N 个光子
        """

        print(f"[{self.name}] 正在制备 {n_photons} 个光子...")
# 1. 生成随机比特 (0 或 1)
        self.bits = np.random.randint(02, n_photons)
# 2. 生成随机基矢 (0 或 1)
        self.bases = np.random.randint(02, n_photons)

# 3. 打包成光子流
        stream = []
for i in range(n_photons):
            stream.append({
'bit': self.bits[i],
'basis': self.bases[i]
            })
return stream

Bob:测量与坍缩

Bob 的逻辑最复杂,因为涉及到量子力学的测量原理

物理规则回顾

  1. 基矢相同:测量结果 = 传入的光子状态(如果不考虑噪声)。
  2. 基矢不同:测量结果 = 完全随机(50% 是 0,50% 是 1)。
classBob(QNode):
defmeasure_photons(self, incoming_stream):
"""
        测量接收到的光子流
        """

        n = len(incoming_stream)
        print(f"[{self.name}] 正在测量 {n} 个光子...")

# 1. Bob 随机选择测量基矢
        self.bases = np.random.randint(02, n)
        self.bits = [] # 用来存测量结果

for i in range(n):
            photon = incoming_stream[i]
            alice_basis = photon['basis']
            alice_bit = photon['bit']
            bob_basis = self.bases[i]

            measured_bit = None

# === 量子测量逻辑 ===
if bob_basis == alice_basis:
# Case A: 基矢匹配 -> 确定性结果
# (注意:这里的 alice_bit 已经是经过信道噪声后的结果了)
                measured_bit = alice_bit
else:
# Case B: 基矢不匹配 -> 坍缩到随机结果
                measured_bit = np.random.randint(02)

            self.bits.append(measured_bit)

        print(f"[{self.name}] 测量完成。")


后处理 —— 筛选 (Sifting)

现在,光子已经跑完了全程。 Alice 手里有一串比特,Bob 手里也有一串。 但是,由于有一半的基矢是不匹配的,这两串比特现在看起来完全不一样。

我们需要进行 Sifting(基矢比对),把那些“牛头不对马嘴”的数据剔除掉。

在主程序中添加筛选逻辑:

defrun_sifting(alice, bob):
"""
    模拟经典信道上的基矢比对过程
    """

    print("\n=== 开始后处理: 筛选 (Sifting) ===")

    sifted_alice_bits = []
    sifted_bob_bits = []
    match_indices = []

    total_count = len(alice.bases)

for i in range(total_count):
# Alice 和 Bob 公开通过经典信道对比基矢
if alice.bases[i] == bob.bases[i]:
            match_indices.append(i)
            sifted_alice_bits.append(alice.bits[i])
            sifted_bob_bits.append(bob.bits[i])

    print(f"原始长度: {total_count}")
    print(f"筛选后长度: {len(sifted_alice_bits)} (约为原始的一半)")

return sifted_alice_bits, sifted_bob_bits

跑起来!—— 完整的仿真实验

最后,我们将所有模块组装起来,进行一次完整的实验。 我们将设置噪声率为 5%,看看最终的误码率是多少。

if __name__ == "__main__":
# 1. 初始化环境
    N_PHOTONS = 10000
    NOISE_LEVEL = 0.05# 5% 的信道噪声

    channel = QuantumChannel(noise_rate=NOISE_LEVEL)
    alice = Alice("Alice")
    bob = Bob("Bob")

# 2. 量子传输阶段
    print("\n--- Phase 1: 量子传输 ---")
# Alice 制备
    photons = alice.prepare_photons(N_PHOTONS)
# 信道传输 (引入噪声)
    noisy_photons = channel.transmit(photons)
# Bob 测量
    bob.measure_photons(noisy_photons)

# 3. 后处理阶段
    print("\n--- Phase 2: 后处理 ---")
# 筛选
    final_key_a, final_key_b = run_sifting(alice, bob)

# 4. 结果分析:计算误码率 (QBER)
# 注意:在真实 QKD 中,我们只能抽取一小部分来算 QBER
# 但在上帝模式仿真中,我们可以对比全部密钥来验证理论

    errors = 0
    final_len = len(final_key_a)
for i in range(final_len):
if final_key_a[i] != final_key_b[i]:
            errors += 1

    qber = errors / final_len if final_len > 0else0

    print("\n=== 最终实验报告 ===")
    print(f"设定噪声率 : {NOISE_LEVEL * 100:.2f}%")
    print(f"最终 QBER  : {qber * 100:.2f}%")

if qber < 0.11:
        print(">> 状态: 安全。可以进行下一步纠错。")
else:
        print(">> 状态: 危险!误码率过高,可能存在窃听或信道故障。")

深入分析 —— 为什么 QBER 和噪声率一样?

运行上述代码,你会发现一个有趣的现象: 如果你的 NOISE_LEVEL 设为 0.05 (5%),那么最终算出来的 QBER 大约也是 5%。

读者提问:“这不废话吗?噪声是 5%,错误率当然是 5%。”

且慢! 这里有一个极其重要的物理逻辑需要你理解。 我们回顾一下 Bob 的测量过程:

  1. 基矢不匹配时:Bob 瞎猜。结果 50% 对,50% 错。这一部分数据,错误率高达 50%。但是,这部分数据在 Sifting 阶段被删掉了。
  2. 基矢匹配时
    • 如果信道无噪声:Alice 是 0,Bob 必测得 0。错误率 0%。
    • 如果信道有噪声:Alice 是 0,信道翻转成 1,Bob 测得 1。错误率 = 翻转概率。

结论: Sifting 过程不仅仅是筛选基矢,它实际上过滤掉了因为“测量原理(测不准)”带来的那 50% 随机错误,只留下了“信道本身”带来的错误。 这就是为什么我们在后处理之后看到的 QBER,能够直接反映信道的物理质量(或 Eve 的攻击强度)。

如果 Eve 出现(比如 Day 16 的中间人攻击),她会导致基矢匹配的那部分数据也出现错误,从而拉高 QBER。我们将在下一章模拟这个过程。



结语

今天,你亲手赋予了 Alice 和 Bob 生命。 看着终端里打印出的 QBER: 5.02%,你是否感到一种掌控感? 这不再是教科书上冷冰冰的 ,而是你自己模拟出来的真实数据。

但是,现在的 Alice 和 Bob 还是“幼稚”的。

  1. 他们没有防御力:如果我把 NOISE_LEVEL 调到 20%,他们只会傻傻地报警,不会尝试修补。
  2. 他们没有敌人:目前的噪声只是大自然的随机干扰,还没有那个狡猾的 Eve。

明日预告:动手时刻 (下) —— 召唤 Eve 与纠错算法实战明天,我们将升级这个仿真器。

  1. 我们要写一个 class Eve,让她在信道中间进行“截获-重发”攻击。
  2. 我们将亲眼看到 Eve 的出现是如何让 QBER 飙升到 25% 的。
  3. 如果不幸发生了错误(QBER < 11%),我们将手写一个简化版的 Cascade 纠错算法,看看如何把那些错误的比特救回来。

代码难度会升级,请保持你的 IDE 处于热身状态。 明天见,代码构建者!


📝

  1. 修改代码:尝试修改 NOISE_LEVEL 为 0.0,运行代码。你的 QBER 是多少?如果是 0.5 (50%),说明代码逻辑有问题(Sifting 没起作用);应该是 0.0。
  2. 脑洞挑战:在目前的 Bob.measure_photons 函数中,我们假设 Bob 的探测器是完美的。试着给 Bob 也加一个参数 detector_efficiency = 0.8(探测效率 80%)。这意味着有 20% 的光子 Bob 会“漏测”(变成 None)。这会如何影响 Sifting 的逻辑?(提示:Bob 需要告诉 Alice 哪些位他没收到)。

(动手写代码,是理解量子通信最快的捷径。)

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-02-08 23:06:16 HTTP/2.0 GET : https://f.mffb.com.cn/a/460899.html
  2. 运行时间 : 0.174525s [ 吞吐率:5.73req/s ] 内存消耗:4,662.50kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=64f40eea1ac1b93ed88305a64e6d76d3
  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.000788s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000589s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000357s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.002559s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000474s ]
  6. SELECT * FROM `set` [ RunTime:0.000198s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000571s ]
  8. SELECT * FROM `article` WHERE `id` = 460899 LIMIT 1 [ RunTime:0.005921s ]
  9. UPDATE `article` SET `lasttime` = 1770563177 WHERE `id` = 460899 [ RunTime:0.000571s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000694s ]
  11. SELECT * FROM `article` WHERE `id` < 460899 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000559s ]
  12. SELECT * FROM `article` WHERE `id` > 460899 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.008108s ]
  13. SELECT * FROM `article` WHERE `id` < 460899 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.003394s ]
  14. SELECT * FROM `article` WHERE `id` < 460899 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.002856s ]
  15. SELECT * FROM `article` WHERE `id` < 460899 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.004244s ]
0.176141s