当前位置:首页>python>用Python写单片机?21.6K Star的MicroPython,让嵌入式开发彻底变了

用Python写单片机?21.6K Star的MicroPython,让嵌入式开发彻底变了

  • 2026-03-29 10:14:44
用Python写单片机?21.6K Star的MicroPython,让嵌入式开发彻底变了


前言:一个"疯狂"的想法

2013年,一个澳大利亚程序员 Damien George 做了一件当时很多人觉得不靠谱的事——他想把 Python 塞进单片机里。

不是那种跑 Linux 的树莓派,而是真正的裸金属单片机,RAM 只有几十 KB、Flash 只有几百 KB 的那种。

他在 Kickstarter 上发起了众筹,目标 1.5 万英镑。结果 1931 个人掏了钱,最终筹到了将近 10 万英镑。

这个项目就是 MicroPython

十多年过去了,MicroPython 在 GitHub 上已经拿到了 21.6K Star,累计 18000+ 次提交8800+ Fork。它从一个"学术实验"变成了嵌入式领域绕不开的存在——ESP32 官方支持它,树莓派 Pico 出厂就预装它,连乐高和欧洲航天局(ESA)都在用它。

今天这篇文章,我们来认真聊聊这个项目:它到底是什么,怎么实现的,能干什么,适合谁用,以及——作为一个写 C 的嵌入式工程师,你该怎么看待它。


一、MicroPython 到底是个什么东西?

一句话:MicroPython 是一个完整的 Python 3 解释器,专门为微控制器和资源受限的嵌入式系统重写。

注意几个关键词:

"完整的解释器" ——它不是什么"Python转C"的翻译器,也不是简化版的脚本引擎。它包含完整的词法分析器、语法解析器、编译器、字节码虚拟机、运行时系统和垃圾回收器,全部用 C99 从零写成。

"专门为微控制器重写" ——CPython(你电脑上跑的那个 Python)启动就要吃掉几十 MB 内存。MicroPython 能在 256KB Flash + 16KB RAM 的条件下跑起来。当然,如果你给它 512KB Flash + 128KB RAM 以上的配置,体验会好得多。

"Python 3" ——它实现了完整的 Python 3.4 语法,包括异常处理、with语句、yield from、生成器,还加入了 Python 3.5 的 async/await。核心数据类型一个不少:strbyteslistdictsettuple、类和实例,全都有。


二、它凭什么能在单片机上跑?

把 Python 塞进 192KB RAM 的芯片里,这件事本身就是一项工程壮举。MicroPython 用了大量底层优化技巧,这里挑几个核心的聊一聊:

指针标记(Pointer Tagging)

这是 MicroPython 最精妙的设计之一。在常规的 Python 实现里,哪怕一个小整数 1 也要在堆上分配一个对象。MicroPython 用了指针标记技术——把小整数、短字符串和小对象直接编码在一个机器字(32位或64位)里,根本不需要分配堆内存。

这意味着你做 x = 42 这种操作时,内存开销几乎为零。

30位填充浮点数(30-bit Stuffed Floats)

浮点数通常需要 4 字节甚至 8 字节的堆分配。MicroPython 提供了一种"30位填充浮点"模式,把浮点数直接塞进机器字里,完全不占用堆空间。精度会有所损失,但对大多数传感器数据处理场景足够了。

冻结字节码(Frozen Bytecode)

通过交叉编译器 mpy-cross,你可以把 Python 脚本预编译成字节码,直接"冻结"到固件的 Flash 里。运行时不需要任何 RAM 来存储代码本身(只有代码创建的动态对象才占 RAM)。这个机制让你在 Flash 充裕但 RAM 紧张的芯片上可以塞进很多功能。

紧凑的垃圾回收器

MicroPython 使用了一个简单、快速、健壮的标记-清除垃圾回收器。堆耗尽时抛出 MemoryError,栈溢出时抛出 RuntimeError——行为完全可预测,不会出现那种"不知道死在哪里"的情况。

原生代码发射器(Native Emitter)

除了字节码解释执行,MicroPython 还支持把代码直接编译成目标平台的机器码。对于 ARM Thumb 和 Xtensa 指令集,你甚至可以在 Python 里内联汇编——没错,在 Python 代码里写汇编。


三、支持哪些硬件?覆盖面超乎想象

MicroPython 项目在最新的 v1.27.0 版本中引入了"端口层级(Port Tier)"体系,把支持的硬件平台分成了三个等级。

Tier 1(一级支持,最成熟)

这些是开发最活跃、测试最充分的平台:

  • ESP32 全系列:ESP32、ESP32-S2、ESP32-S3、ESP32-C3、ESP32-C6,以及最新的 ESP32-C5 和 ESP32-P4
  • STM32 全系列:覆盖 F0、F4、F7、G0、G4、H5、H7、L0、L1、L4、N6、WB、WL,还有最新加入的 STM32U5xx
  • RP2040 / RP2350:树莓派 Pico、Pico W 及各种第三方板
  • NXP i.MX RT
  • SAMD21 / SAMD51(Microchip/Atmel)
  • Unix / Windows / macOS(是的,你也可以在电脑上跑 MicroPython,方便开发调试)

Tier 2(二级支持)

  • Alif Semiconductor Ensemble(E3、E7)
  • Nordic nRF51 / nRF52
  • Renesas RA 系列
  • WebAssembly
  • Zephyr RTOS

Tier 3(社区维护)

  • CC3200(TI)
  • ESP8266
  • MIMXRT 部分型号
  • BBC micro:bit(nRF)
  • Teensy(PJRC)

固件下载页面列出了超过 50 个硬件厂商的板卡,从 Arduino、Adafruit、SparkFun,到国内熟悉的 WeAct、Waveshare、LILYGO、M5Stack、合宙,覆盖面极广。


四、5 分钟上手:从刷固件到点灯

说再多不如动手试。以最常见的 ESP32 和 Raspberry Pi Pico 为例,看看从零到跑通代码需要几步。

方式一:ESP32

第一步:下载固件

到 MicroPython 官网下载页(micropython.org/download),找到你的板子型号,下载 .bin 固件文件。

第二步:烧录固件

用 esptool.py 烧录。如果你没装过,先 pip install esptool,然后:

# 先擦除esptool.py --port /dev/ttyUSB0 erase_flash# 再烧录esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash 0x1000 firmware.bin

第三步:连接 REPL

用任何串口终端工具(Putty、minicom、Thonny 都行)连上板子,波特率 115200,你就能看到 Python 的 >>> 提示符了。

第四步:点灯!

from machine import Pinled = Pin(2, Pin.OUT)led.on()

就这三行。灯亮了。

方式二:Raspberry Pi Pico

更简单——按住 BOOTSEL 按钮插上 USB,电脑会识别出一个 U 盘,把 .uf2 固件文件拖进去,松手,完事。

打开 Thonny IDE,选择解释器为"MicroPython (Raspberry Pi Pico)",直接在底部 Shell 里敲代码就行。


五、不只是点灯——MicroPython 能做的事

MicroPython 提供了一套完整的硬件抽象库 machine 模块,基本覆盖了你日常需要的所有外设接口:

基础 GPIO 操作

from machine import Pin# 输出led = Pin(2, Pin.OUT)led.toggle()# 输入(带上拉)btn = Pin(0, Pin.IN, Pin.PULL_UP)print(btn.value())

PWM 控制

from machine import Pin, PWMpwm = PWM(Pin(15), freq=1000, duty=512)  # 50% 占空比

I2C 通信

from machine import I2C, Pini2c = I2C(0, scl=Pin(22), sda=Pin(21), freq=400000)devices = i2c.scan()print("Found devices:", devices)

SPI 通信

from machine import SPI, Pinspi = SPI(1, baudrate=1000000, polarity=0, phase=0)spi.write(b'\x01\x02\x03')

ADC 采样

from machine import ADCadc = ADC(Pin(34))adc.atten(ADC.ATTN_11DB)  # 满量程约 3.3Vprint(adc.read())  # 12-bit: 0~4095

WiFi 联网(ESP32)

import networkwlan = network.WLAN(network.STA_IF)wlan.active(True)wlan.connect('你的WiFi名''密码')whilenot wlan.isconnected():passprint('IP:', wlan.ifconfig()[0])

异步编程(asyncio)

import asyncioasyncdefblink(pin, interval):    led = Pin(pin, Pin.OUT)whileTrue:        led.toggle()await asyncio.sleep_ms(interval)asyncdefmain():# 两个灯以不同频率闪烁,互不阻塞    asyncio.create_task(blink(2500))    asyncio.create_task(blink(151000))whileTrue:await asyncio.sleep(10)asyncio.run(main())

这个 asyncio 模块是 MicroPython 处理并发的推荐方式——比中断回调和多线程都更安全、更好调试。


六、MicroPython vs C/C++:不是替代,而是分工

这是很多嵌入式工程师最关心的问题,也是最容易引发争论的话题。我们客观来说。

MicroPython 的优势

开发速度碾压级别的快。 写完代码保存,REPL 里直接 import 就能跑,不需要编译、链接、烧录、等待。改一行代码的调试周期从"分钟级"压缩到"秒级"。

交互式调试。 REPL 不只是一个运行入口,它是一个实时的调试工具。你可以在运行时查看任何变量、调用任何函数、扫描 I2C 总线、读取寄存器——所有操作都是即时的。这对硬件调试来说太方便了。

代码可读性。 Python 的可读性优势在团队协作和项目交接时尤为明显。一个实习生看 MicroPython 代码基本能看懂在做什么,但看一段寄存器操作级别的 C 代码就未必了。

跨平台移植。 得益于 HAL 抽象层,同一段 MicroPython 代码可以在 ESP32 和 STM32 之间几乎无缝迁移。

C/C++ 不可替代的场景

极限性能要求。 MicroPython 的执行速度大约是 C 的 1/10 到 1/100(取决于具体操作)。如果你在做高速 ADC 采样、实时电机控制、高帧率信号处理,Python 解释器的开销是不可接受的。

极限资源约束。 MicroPython 本身的固件就要占 256KB~1MB Flash。如果你用的是 Flash 只有 64KB 的小芯片(比如某些 STM32F0、STC8),根本塞不下。

硬实时要求。 垃圾回收器会导致不确定的暂停时间。对于需要微秒级确定性响应的场景(如电机 FOC 控制),这是硬伤。

量产成本敏感。 MicroPython 需要更大 Flash/RAM 的芯片,这在十万级量产时会反映在 BOM 成本上。

最佳实践:混合使用

实际上,很多成熟的项目采用的是混合策略:

  • 用 MicroPython 做快速原型验证:验证传感器能不能读到数据、通信协议对不对、算法逻辑有没有问题
  • 用 C 做最终产品:在验证通过后,把关键逻辑用 C 重写,追求性能和成本最优
  • 或者直接用 MicroPython 的 C 扩展机制:把性能敏感的部分写成 C 模块,其余用 Python 胶水代码粘合

MicroPython 甚至支持内联汇编(目前支持 ARM Thumb 和 Xtensa 指令集),你可以在 Python 代码里直接嵌入汇编函数来处理最关键的热点路径。


七、v1.27.0:最新版本都更新了什么?

MicroPython 最新的稳定版是 2025 年 12 月发布的 v1.27.0,这是一个相当重磅的版本:

新增 ESP32-C5 和 ESP32-P4 支持。 ESP32-P4 是乐鑫最新的高性能芯片,可以独立运行,也可以搭配 ESP32-C5 或 C6 作为无线协处理器。MicroPython 第一时间提供了支持。

新增 STM32U5xx 支持。 STM32U5 是 ST 的超低功耗高性能系列,支持 USB、ADC、DAC、UART、I2C、SPI 和 RTC,适合电池供电的 IoT 应用。

测试套件大幅增强。 超过 590 个测试文件、18500+ 个测试用例,核心代码覆盖率达到 99.2%。这个数字对于一个嵌入式开源项目来说相当惊人。

引入端口层级体系。 明确了各平台的支持等级和维护承诺,让用户在选型时有更清晰的参考。

STM32G4 硬件 I2C、STM32N6 千兆以太网 等一系列具体改进也包含在这个版本中。


八、实战场景:谁在用 MicroPython?

MicroPython 早就不是"玩具"了。来看看几个真实的应用方向:

1. IoT 快速原型

这是 MicroPython 最大的主场。ESP32 + MicroPython + MQTT/HTTP,几十行代码就能做一个温湿度上报节点、一个远程开关控制器、一个简易的智能家居网关。对于验证产品概念(PoC),没有比这更快的方案了。

2. 教育领域

BBC micro:bit 项目让英国数百万中小学生通过 MicroPython 接触编程。树莓派基金会为 Pico 提供了大量 MicroPython 教学资源。Python 语法的低门槛让零基础的学生也能在几分钟内点亮第一颗 LED。

3. 科研与航天

欧洲航天局(ESA)资助了 MicroPython 的开发,因为他们想在太空任务中使用 Python。这不是开玩笑——在快速迭代、灵活可配置的卫星载荷控制场景中,MicroPython 的优势非常明显。

4. 创客与无人机

基于 ESP32-S3 的 pyDrone 项目用 MicroPython 实现飞控、传感器融合和图像处理。通过 Python 脚本就能定制自主飞行行为,大大降低了无人机二次开发的门槛。

5. 商业产品

LEGO 的 Mindstorms EV3 运行 MicroPython。SparkFun 在 2025 年一口气发布了 47 个同时支持 Python 和 MicroPython 的驱动库。Arduino 官方也提供了 MicroPython 固件。这些不是实验性质的尝试,而是面向消费者的正式产品。


九、开发工具生态

工欲善其事,必先利其器。MicroPython 的工具链已经相当成熟:

Thonny IDE ——面向初学者的首选。内置 MicroPython 支持,可以直接通过 USB 连接板卡,一键运行/上传代码,还能浏览板上文件系统。免费,跨平台。

mpremote ——官方命令行工具。文件管理、REPL 连接、固件信息查看、包安装,一个工具搞定。适合喜欢终端操作的老手。

mpy-cross ——交叉编译器。把 .py 编译成 .mpy 字节码文件,减少 RAM 占用,加快加载速度。

WebREPL ——通过 WiFi 连接板子的 REPL,不需要 USB 线。适合板子已经装进外壳或者放在远处的场景。

VS Code + Pymakr / MicroPico 插件 ——如果你是 VS Code 用户,这些插件可以提供代码高亮、自动完成、一键上传等功能。

micropython-lib ——官方维护的扩展库集合,提供了大量 CPython 标准库的 MicroPython 移植版,以及社区贡献的驱动和工具库。


十、入坑指南:几个过来人的建议

如果你决定试试 MicroPython,这里有几条实用建议:

先在电脑上学好 Python 基础。 MicroPython 和 CPython 的语法几乎完全一致。不要一上来就在单片机上学 Python,那样效率很低。先在电脑上把列表、字典、函数、类、异常处理这些基本概念搞清楚,再上手硬件会顺畅很多。

选硬件之前先查驱动。 这是 Wiki 里反复强调的一点。很多初学者先买一堆传感器模块回来,然后发现没有 MicroPython 驱动,只能干瞪眼。正确的做法是:先去 GitHub 搜搜有没有现成的驱动,确认了再买硬件。

并发编程用 asyncio,别急着上中断和多线程。 定时器回调、中断服务、多线程这些听起来很酷,但它们引入的竞态条件和资源冲突问题会让初学者崩溃。MicroPython 官方推荐使用 asyncio 做协作式多任务,安全、可控、好调试。

善用 REPL。 这是 MicroPython 相比 C 最大的体验差距之一。不确定某个 API 怎么用?直接在 REPL 里试。不确定 I2C 设备地址是多少?i2c.scan() 一下就知道了。把 REPL 当作你的实时调试器和文档查询工具。

了解内存限制。 MicroPython 毕竟跑在资源受限的平台上。避免创建大量临时对象,注意字符串拼接的内存开销,必要时用 gc.collect() 手动触发垃圾回收。官方文档有一篇专门讲"受限环境下的编程",建议认真读一遍。


十一、项目信息速查

项目
信息
项目名称
MicroPython
GitHub 地址
github.com/micropython/micropython
官网
micropython.org
最新版本
v1.27.0(2025年12月)
开源协议
MIT License
编程语言
C99(解释器)/ Python(用户代码)
GitHub Star
21.5K+
支持架构
ARM Cortex-M, Xtensa, RISC-V, x86, x86-64
最低配置
256KB Flash + 16KB RAM
推荐配置
512KB Flash + 128KB RAM 以上
创始人
Damien George(澳大利亚)
主要赞助方
George Robotics, Espressif, Arduino, OpenMV, Planet Innovation

写在最后

MicroPython 不会取代 C,就像 Python 没有取代 C++ 一样。但它确实改变了嵌入式开发的一部分——让快速验证想法变得更容易,让更多人能参与到硬件开发中来,让那些"想做个小东西但不想写 200 行初始化代码"的场景有了更好的选择。

对于专业的嵌入式工程师来说,MicroPython 是工具箱里的又一把趁手工具。你不一定每天用它,但当你需要快速验证一个传感器、调通一个通信协议、或者给客户做一个 Demo 的时候,它可能会帮你省下好几天的时间。

对于正在学习嵌入式的新人来说,MicroPython 是一个非常友好的入口。先用它理解硬件的工作方式,再去学 C 和寄存器操作,会比直接硬啃手册轻松得多。

21.6K Star,18000 次提交,十年磨一剑。这个项目值得你花时间了解一下。


国内访问 GitHub 有时不稳定,本文项目及固件国内下载链接,公众号后台回复【micropython】或【0034】即可获取。

如果你也在用 MicroPython 做项目,欢迎在评论区分享你的经验——踩过的坑比教程更有价值。


往期推荐

当单片机遇上"拖拽编程":这个23K Star的开源神器,让嵌入式开发变了天

工业现场用了 20 年的协议,这个开源库让你在单片机上 10 分钟跑起来

单片机开发,这些项目值得收藏

单片机 UART 数据老是丢?可能你的环形缓冲区根本没写对

不用Cube,不用Keil,只带一份数据手册——这个开源项目让你真正看透ARM单片机

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-03-29 14:30:09 HTTP/2.0 GET : https://f.mffb.com.cn/a/483753.html
  2. 运行时间 : 0.204301s [ 吞吐率:4.89req/s ] 内存消耗:4,581.75kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=be9a63463682e11269f3e4878d7d21e3
  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.001210s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001695s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000712s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000669s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001377s ]
  6. SELECT * FROM `set` [ RunTime:0.000583s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001539s ]
  8. SELECT * FROM `article` WHERE `id` = 483753 LIMIT 1 [ RunTime:0.001598s ]
  9. UPDATE `article` SET `lasttime` = 1774765809 WHERE `id` = 483753 [ RunTime:0.004129s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000817s ]
  11. SELECT * FROM `article` WHERE `id` < 483753 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.004014s ]
  12. SELECT * FROM `article` WHERE `id` > 483753 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001184s ]
  13. SELECT * FROM `article` WHERE `id` < 483753 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.002630s ]
  14. SELECT * FROM `article` WHERE `id` < 483753 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.008258s ]
  15. SELECT * FROM `article` WHERE `id` < 483753 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.002672s ]
0.210033s