当前位置:首页>python>从零掌握 MAVLink 通信:Python-Java 模版代码实战快速入门

从零掌握 MAVLink 通信:Python-Java 模版代码实战快速入门

  • 2026-06-29 21:44:29
从零掌握 MAVLink 通信:Python-Java 模版代码实战快速入门

上周我在客户现场调一台四旋翼,飞控能连上,地面站也能看到心跳包,偏偏业务系统就是“收不到数据”。现场几个人围着串口、UDP、日志一顿翻,最后发现不是链路坏了,而是团队里没人真正搞明白 MAVLink 的消息结构和接入方式。很多无人机项目卡住,不是卡在算法,也不是卡在硬件,而是卡在“协议会用,但不会真正落地”。无人机开发里,飞起来只是起点,稳定通信才是交付线。 如果你也在做飞控对接、载荷联调、地面站开发,或者准备面试无人机通信岗,那这篇文章我想尽量讲得接地气一点:不空谈协议定义,直接带你把 MAVLink 的认知、调试思路和 Python/Java 模版代码串起来。

为什么很多人学过 MAVLink,项目里还是接不住

我面过不少候选人,简历上写着“熟悉 MAVLink 协议”,一问常见消息、链路拓扑、心跳机制、序列号校验,马上就露馅。还有一些项目组,能把飞控跑起来,能在 QGroundControl 看到姿态和 GPS,却一到“接入公司自己的业务平台”就开始掉坑:消息订阅乱、串口参数靠猜、丢包定位靠玄学。

MAVLink 难的地方,不在于它名字听起来像“高精尖”,而在于它夹在飞控、伴飞计算机、地面站、云平台之间,天然就是系统集成问题。你只懂代码不够,只懂协议也不够,必须把“链路—消息—解析—业务”四层一起看。

我自己总结过一个入门模型,叫 M-L-C-B 四层法

  • M:Medium
    ,先看传输介质,串口、UDP、TCP 到底是谁在跑
  • L:Link
    ,确认链路状态,端口、波特率、IP、丢包率、心跳是否正常
  • C:Content
    ,看消息内容,ID、字段、CRC、系统号/组件号是否匹配
  • B:Business
    ,最后才是业务动作,比如起飞、返航、姿态上报、任务执行

很多人一上来就写控制逻辑,这是典型的顺序错了。链路都不稳,谈什么 offboard;消息都没解析准,谈什么轨迹规划。

举个很真实的场景:某次集成中,飞控串口开的是 921600,但伴飞电脑程序默认按 57600 去连,结果日志里不停报超时。团队折腾了半天,怀疑是 Python 库版本问题。后来我把排查顺序拉回到 M-L-C-B,5 分钟定位,问题就结束了。原本一轮联调要 5 秒才看到一次有效数据,参数修正后基本能稳定在 500ms 内完成握手和首包接收。

协议不是文档里的定义,协议是链路上每一帧都能被你解释清楚。

先把 MAVLink 想明白:它到底在传什么

你可以把 MAVLink 理解成无人机领域的“标准消息语言”。飞控、地面站、相机云台、伴飞电脑,大家不一定是同一家公司做的,但只要都说 MAVLink,这些设备就能建立基本沟通。

从工程角度看,MAVLink 最重要的不是“有多少消息类型”,而是你要知道几个高频角色:

  1. 心跳类消息
    :用于宣告“我还活着”,同时告诉别人自己是什么系统、当前状态如何。
  2. 状态类消息
    :姿态、位置、电池、电机、GPS、模式等,是上报链路的核心。
  3. 命令类消息
    :起飞、降落、切模式、返航、任务控制,本质上是请求执行动作。
  4. 任务/参数类消息
    :航点、任务上传下载、参数读写,常见于地面站和飞控管理。

实际项目里,你不需要第一天就背几百个消息。你真正高频用到的,往往是 heartbeat、global/local position、attitude、command_long、mission、parameter 这一类。先拿这批打通链路,比啃完整协议手册更划算。

这里再补一个容易被忽略的点:MAVLink 不是“只能给地面站用”。它同样适合业务系统接入。比如你做一个巡检平台,需要无人机把位置、航向、电量发到后端;或者你做边缘计算,需要伴飞计算机根据识别结果向飞控发送控制指令。这些都离不开 MAVLink 的消息解析和封装。

我见过一个农业项目,飞控和 RTK 一切正常,问题出在业务平台要按固定频率拉取位置并回写任务状态。团队最开始用自定义 JSON 套在 UDP 上,短期看上去“开发快”,后面遇到多机调度、消息冲突、状态不一致,维护成本直接翻倍。后来切回标准化 MAVLink 消息,虽然前期适配花了几天,但后续接入效率明显高很多。

在无人机系统里,标准协议的价值,不是让你写得更酷,而是让后续每一次协作都少踩坑。

Python 实战:10 分钟写出一个能跑的 MAVLink 接收器

如果你是算法、测试、原型验证岗位,我通常建议先用 Python 入门。原因很简单:上手快,调试快,看日志也舒服。只要链路打通,十几行代码就能收到飞控的心跳和位置消息。

下面给你一个可直接改的模板,基于 pymavlink。这个脚本做三件事:建立 UDP 连接、等待心跳、循环打印姿态和全局位置消息。

from pymavlink import mavutilimport timedef connect_vehicle(connection_str="udp:127.0.0.1:14550"):    print(f"[INFO] connecting to {connection_str}")    master = mavutil.mavlink_connection(connection_str)    master.wait_heartbeat(timeout=10)    print(        f"[INFO] heartbeat ok, system={master.target_system}, "        f"component={master.target_component}"    )    return masterdef request_data_stream(master, rate_hz=5):    # 请求常见数据流,某些飞控/固件版本可能需要额外适配    master.mav.request_data_stream_send(        master.target_system,        master.target_component,        mavutil.mavlink.MAV_DATA_STREAM_ALL,        rate_hz,        1    )    print(f"[INFO] request data stream: {rate_hz} Hz")def read_messages(master):    last_print_time = time.time()    while True:        msg = master.recv_match(blocking=True, timeout=2)        if msg is None:            print("[WARN] no message received in 2s")            continue        msg_type = msg.get_type()        if msg_type == "HEARTBEAT":            print(f"[HEARTBEAT] mode={getattr(msg, 'custom_mode''N/A')}")        elif msg_type == "GLOBAL_POSITION_INT":            lat = msg.lat / 1e7            lon = msg.lon / 1e7            alt = msg.relative_alt / 1000.0            print(f"[GPS] lat={lat:.7f}, lon={lon:.7f}, rel_alt={alt:.2f}m")        elif msg_type == "ATTITUDE":            print(                f"[ATT] roll={msg.roll:.3f}, pitch={msg.pitch:.3f}, yaw={msg.yaw:.3f}"            )        if time.time() - last_print_time > 10:            print("[INFO] still receiving mavlink messages...")            last_print_time = time.time()if __name__ == "__main__":    master = connect_vehicle("udp:127.0.0.1:14550")    request_data_stream(master, rate_hz=10)    read_messages(master)

这段代码看着简单,但够你完成 70% 的入门调试工作。比如:

  • SITL 仿真里看飞控有没有稳定发包
  • 伴飞电脑验证能否从 PX4/ArduPilot 收到状态
  • 定位“没消息”到底是端口问题还是协议问题

如果你连心跳都等不到,先别碰业务代码,优先查这几个点:

  • UDP 端口有没有配错,14550/14540 是否混用
  • 串口桥接是否正常
  • 防火墙是否拦截
  • 飞控输出协议是否真的是 MAVLink
  • 系统号和组件号有没有冲突

很多新手会问,Python 能不能直接发控制命令?可以,但我建议先做“读”再做“写”。因为读链路没打通的时候,发命令往往只会制造更多变量。

Java 实战:业务系统接入 MAVLink 的常见写法

Python 适合原型验证,Java 更适合企业级平台接入。尤其是做无人机调度平台、设备管理后台、作业监管系统时,Java 生态在并发、服务治理、日志体系上会更顺手。问题是,很多 Java 开发平时做 Web 服务多,第一次碰 MAVLink 会有点懵:这玩意不是 HTTP,也不是普通 Socket 文本流,它是二进制协议,得按消息格式去解析。

这里给你一个 Java 侧的思路模板,核心目标不是“覆盖所有消息”,而是先打通最常见的接收路径。以 UDP 为例,你可以建立一个监听线程,拿到 datagram 后交给 MAVLink 解析器,再根据消息 ID 分发业务逻辑。

示意代码如下:

import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;public class MavlinkUdpDemo {    public static void main(String[] args) throws Exception {        int port = 14550;        DatagramSocket socket = new DatagramSocket(port);        byte[] buffer = new byte[2048];        System.out.println("Listening MAVLink UDP on port " + port);        while (true) {            DatagramPacket packet = new DatagramPacket(buffer, buffer.length);            socket.receive(packet);            byte[] data = new byte[packet.getLength()];            System.arraycopy(packet.getData(), 0, data, 0, packet.getLength());            // 这里通常接 MAVLink 解析库进行解码            // 伪代码:            // MavMessage msg = mavParser.parse(data);            // if (msg instanceof Heartbeat) { ... }            // if (msg instanceof GlobalPositionInt) { ... }            System.out.println("Receive packet from " +                    packet.getAddress().getHostAddress() +                    ":" + packet.getPort() +                    ", len=" + packet.getLength());        }    }}

真实项目里,Java 层一般会再往下拆成 3 层:

  • 接入层
    :负责 UDP/串口/TCP 收包、重连、心跳监控
  • 协议层
    :负责 MAVLink 编解码、消息对象转换
  • 业务层
    :负责设备状态缓存、告警、轨迹上报、任务流转

这样做的好处是,你后面要从 UDP 切到串口桥、从单机改成多机,也不用把业务代码全推翻。

我之前看过一个面试者做的项目,他把解析、状态更新、数据库写入全塞在一个 while 循环里,结果高频消息一来,JVM 压力立刻上去,姿态更新延迟能飙到 2 秒以上。后来按三层拆分,接收线程只做解析和投递,业务异步落库,状态展示延迟从 2 秒压到 200ms 左右。这个优化不炫技,但非常工程化。

写无人机通信代码,最怕的不是功能少,而是链路、协议、业务搅成一锅粥。

不只会收消息,还要会接进 ROS2 和无人机系统里

只会打印心跳包,在真实项目里还不够。你真正要面对的是:飞控发出的 MAVLink,怎么进入你的机器人系统、导航算法、云端监控和业务看板。这里 ROS2 就很关键了。

现在很多无人机项目都在往 ROS2 体系迁移,原因很实际:分布式能力更强,实时性更好,跨平台支持也更成熟。尤其你做的是“飞控 + 机载计算 + 地面端 + 云端”的多节点系统,ROS2 比老架构更适合长期维护。

一个典型链路是这样的:PX4 飞控输出 MAVLink,桥接节点把关键数据转成 ROS2 可消费的话题,导航、SLAM、路径规划、远程监控这些模块再各自订阅。你可以把它理解成,MAVLink 负责设备之间说“通用语言”,ROS2 负责系统内部组织“模块协作”。

如果你用 Ubuntu 22.04,安装 ROS2 Humble 后,通常会先建一个工作空间,然后把 PX4 的 ROS2 相关包拉进来做构建。核心桥接节点启动后,就能把位置、姿态、控制指令等映射到 ROS2 话题。这样一来,飞控和上层算法之间就不再是“硬耦合串口代码”,而是一套可观测、可调试、可扩展的消息系统。

举个场景:你做巡检无人机,机载视觉节点识别到目标后,需要把结果传给规划模块,规划模块计算新航点,再由控制节点下发给飞控。如果你全靠自定义 Socket 协议,一旦链路复杂、节点变多,维护成本会急剧上升;而 MAVLink + ROS2 的组合,能把“设备通信”和“算法协同”拆开处理。

这也是我为什么推荐你不要把 MAVLink 只看成“飞控协议”。它其实是进入整个无人机系统工程的一扇门。你掌握它,不只是为了收一条姿态消息,而是为了把飞控、算法、平台真正串起来。

两个最容易踩的坑,决定你能不能从“能跑”走到“可交付”

最后聊两个我见得最多的坑,也是新人最容易在现场翻车的地方。

坑一:把“收到数据”误判成“链路稳定”

很多人第一次收到 HEARTBEAT,就觉得大功告成。其实远远不够。心跳包只能证明基本通信存在,不代表你的姿态、GPS、控制消息都稳定。现场联调时,我通常会盯这几个指标:

  • 心跳是否连续,是否存在长时间中断
  • 关键状态消息频率是否稳定
  • 是否存在明显乱序、丢包、CRC 异常
  • 控制指令发送后,飞控响应时延是否可接受

有个项目里,地面站每分钟都能看到几次位置刷新,团队误以为“网络还行”。结果一做半自主控制,飞机频繁响应迟滞。后来抓包才发现,位置消息频率抖动特别大,平均 5Hz,看起来够用,但实际能掉到 1Hz。对人眼展示还行,对控制闭环就是灾难。

坑二:协议接通了,但没有工程化封装

第二个坑更隐蔽:开发阶段靠脚本和 demo 把链路打通了,正式交付时却没有形成统一接入规范。表现出来就是:

  • 每个项目都重写一遍接收逻辑
  • 每个同事对消息字段解释不一致
  • 同一种设备,不同服务里系统号映射不同
  • 日志里没有原始帧,问题无法回放

我建议团队至少做三件事:

  1. 把常见消息做成统一 DTO 或领域对象
  2. 给链路层、协议层、业务层分别打日志
  3. 保留原始报文抓取能力,方便复盘问题

面试里我也常问一句:“如果客户说昨天下午 3 点 17 分无人机状态异常,你怎么复盘?” 只会说“看数据库”肯定不够。真正靠谱的答案,应该能落到消息时间线、原始报文、控制指令、系统状态切换记录上。

能跑的 demo 解决的是演示问题,可交付的系统解决的是复盘问题。

最后,如果你想系统补齐无人机通信、协议开发、ROS2 集成、飞控对接这些知识,我很推荐去看一下这个开源知识库:GitHub:https://github.com/zhouzhupianbei/UAV-Stack-Knowledge-Base 。里面把低空经济相关的技术栈拆得比较完整,适合少走很多资料分散的弯路。你可以先从 MAVLink 和 ROS2 相关内容下手,顺手点个 Star;如果你在项目里踩过坑,也欢迎提 Issue 或直接发 PR,一起把这套知识库打磨得更实用。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-03 09:45:06 HTTP/2.0 GET : https://f.mffb.com.cn/a/487117.html
  2. 运行时间 : 0.180522s [ 吞吐率:5.54req/s ] 内存消耗:5,029.54kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=cfcf5e8c2646257dc21a5df6e5bc6ea7
  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.000431s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000538s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.034701s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.005937s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000648s ]
  6. SELECT * FROM `set` [ RunTime:0.004242s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000579s ]
  8. SELECT * FROM `article` WHERE `id` = 487117 LIMIT 1 [ RunTime:0.004197s ]
  9. UPDATE `article` SET `lasttime` = 1783043106 WHERE `id` = 487117 [ RunTime:0.015570s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000312s ]
  11. SELECT * FROM `article` WHERE `id` < 487117 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000526s ]
  12. SELECT * FROM `article` WHERE `id` > 487117 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001218s ]
  13. SELECT * FROM `article` WHERE `id` < 487117 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.010664s ]
  14. SELECT * FROM `article` WHERE `id` < 487117 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.018402s ]
  15. SELECT * FROM `article` WHERE `id` < 487117 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.001693s ]
0.182380s