当前位置:首页>Linux>笑不活了!Linux广播,竟是“餐厅的全员呼叫神器”

笑不活了!Linux广播,竟是“餐厅的全员呼叫神器”

  • 2026-04-19 14:48:37
笑不活了!Linux广播,竟是“餐厅的全员呼叫神器”

点击蓝字

关注我们

笑不活了!Linux广播,竟是“餐厅的全员呼叫神器”

新手必看|告别一对一通信,用餐厅类比讲透广播原理,马年轻松拿捏Linux网络通信新技能✅

一、前言:谁懂啊!Linux通信,不止有“一对一送餐”,还有“全员广播”

刚吃透Linux TCP/IP协议、网络编程的宝子们,是不是觉得通信只有一种方式:一对一发送消息,就像餐厅里送餐员给单个顾客送菜,你发消息只能传给指定的那台电脑,多一台都传不了?

其实大错特错!Linux里还有一种超实用的通信方式——广播,它就像餐厅的“全员呼叫神器”,不用一个个单独通知,只要喊一声,餐厅里所有顾客、员工都能听到,对应到电脑世界,就是一台电脑发消息,同一局域网内的所有电脑,都能同步收到,不用单独指定接收方,省时又高效。

很多新手一听到“广播”,就联想到“广播电台”,觉得它和自己的Linux编程没关系,甚至觉得“我只会一对一通信就够了”。但其实,广播在实际开发中超级常用,比如局域网内的通知推送、设备发现、群消息同步,没有广播,这些场景根本没法高效实现,就像餐厅没有全员呼叫,通知所有顾客“今日特价”,只能一个个跑过去说,累到崩溃。

今天就用最接地气、最风趣的话,把Linux广播讲透,不堆底层源码,不搞复杂推导,只讲“广播是什么、怎么用、和一对一通信有啥区别”,延续餐厅类比,全程无晦涩术语,新手跟着学,马年轻松拿捏Linux广播,再也不用被“全员通知”的场景难住!

二、先搞懂:Linux广播,本质就是“餐厅的全员呼叫神器”

2.1 核心定义:广播 = 一台发消息,全员都能收

先破除新手恐惧:Linux广播不是什么高深技术,本质就是“一种局域网内的高效通信方式”,核心逻辑特别简单——发送方只需要发送一条消息,同一局域网内的所有接收方,不用提前建立连接,不用知道发送方的具体信息,都能同步收到消息,就像餐厅的服务员,拿着扩音器喊一声“今日菜品八折”,餐厅里所有顾客、员工,不管在哪个角落,都能听到。

还是用“餐厅”的类比,新手不用死记硬背,一眼就能懂广播和一对一通信(TCP/UDP一对一)的区别,看完再也不混淆:

1.  一对一通信(TCP/UDP一对一):相当于送餐员给单个顾客送菜,只能送到指定顾客的餐桌上,其他顾客根本看不到、拿不到,比如你给朋友发微信消息,只有朋友能收到;

2.  Linux广播:相当于餐厅服务员用扩音器全员呼叫,不用一个个找顾客,喊一声,所有顾客都能听到通知,比如你在局域网内发一条广播消息,同一网络里的所有电脑,都能同步收到,不用单独指定接收方。

补充一句:广播只能在“局域网”内使用,就像餐厅的扩音器,只能在餐厅内部喊,出了餐厅,外面的人就听不到了;广播也不能跨网段传输,比如上海的局域网广播,北京的电脑就收不到,这一点新手一定要记牢,避免踩坑。

2.2 灵魂拷问:为什么非要学广播?一对一通信不够用吗?

新手最头疼的问题:我已经会写TCP、UDP一对一通信,能实现两台电脑之间发消息了,为什么还要学广播?其实不是不够用,而是遇到“全员通知”的场景,一对一通信会彻底拉胯,就像餐厅要通知所有顾客“今日打烊时间提前”,用一对一通知,服务员跑断腿也通知不完,效率极低。

举个实操场景(新手能懂的简单例子):你写一个局域网设备管理程序,需要通知同一网络里的所有设备“重启更新”,如果用一对一通信,你需要一个个找到每个设备的IP地址,逐个发送通知,要是有100台设备,就要发送100次,费时又费力;而用广播,你只需要发送一条消息,100台设备就能同步收到,效率直接拉满。

核心原因总结(新手记这3点就够):

1.  提升效率:全员通知场景,不用逐个发送消息,一条广播搞定所有,大幅节省开发时间和系统资源,就像餐厅全员通知,扩音器一声搞定,不用跑断腿;

2.  简化开发:不用记录所有接收方的IP地址,不用建立多个连接,发送方只需要发送消息,接收方只需要监听广播,代码比一对一通信更简洁;

3.  适配特定场景:局域网通知、设备发现、群消息同步、故障告警,这些场景都需要广播,一对一通信根本替代不了,比如路由器给局域网内所有设备分配IP,用的就是广播。

小结:Linux广播,就是局域网内的“全员呼叫神器”,弥补了一对一通信的不足,学会它,你就能应对各种全员通知场景,编写更高效、更简洁的Linux网络程序,不用再被“逐个发送”折磨。

三、新手必懂:Linux广播核心原理,马年一看就会

很多新手觉得“广播很难”,其实一点都不难!Linux广播的核心原理,还是基于我们之前学的TCP/IP协议,只是在传输层和网络层做了一点“小手脚”,用餐厅类比,就能轻松理解,全程无晦涩术语,新手一看就懂。

重点说明:Linux广播主要基于UDP协议实现(因为UDP无连接、速度快,适合广播这种“一次性全员通知”的场景),核心是“广播地址”——相当于餐厅的“扩音器”,发送方把消息发给广播地址,同一局域网内的所有设备,都会监听这个广播地址,从而收到消息。

3.1 核心关键:广播地址,相当于餐厅的“扩音器”

广播地址是Linux广播的核心,相当于餐厅的“扩音器”,它是一个特殊的IP地址,同一局域网内的所有设备,都会默认监听这个地址,就像餐厅里所有顾客,都会默认听扩音器里的通知,不用特意去关注。

新手不用死记硬背广播地址的规则,记住一个最常用的即可:对于局域网IP(比如192.168.1.XXX),它的广播地址是“网段+255”,比如192.168.1.255,这个地址就是该局域网的“扩音器”,发送方把消息发给这个地址,同一局域网内所有IP为192.168.1.XXX的设备,都能收到消息。

类比记忆:广播地址 = 餐厅的扩音器,发送方 = 服务员,接收方 = 餐厅里的所有顾客,服务员对着扩音器(广播地址)喊一声(发送消息),所有顾客(同一局域网设备)都能听到,不用一个个通知。

补充:广播地址分为“本地广播”和“定向广播”,新手重点掌握本地广播(就是上面说的网段广播,比如192.168.1.255),定向广播很少用,不用深入研究,避免增加学习负担。

3.2 实现逻辑:广播的发送和接收,就像“服务员喊通知、顾客听通知”

Linux广播的实现逻辑特别简单,分为“发送方”和“接收方”,对应餐厅里的“服务员”和“顾客”,流程比TCP通信简单太多,新手记一遍就能记住:

1.  发送方(服务员):创建UDP套接字(相当于拿起扩音器)→ 设置广播权限(相当于打开扩音器开关)→ 填写广播地址和端口(相当于对着扩音器,确定要通知的范围)→ 发送消息(相当于喊出通知);

2.  接收方(顾客):创建UDP套接字(相当于打开耳朵,准备听通知)→ 绑定广播地址对应的端口(相当于调到扩音器的频道,确保能听到)→ 循环监听,接收广播消息(相当于一直听着,一旦有通知就接收)。

重点提醒:发送方和接收方的端口号必须一致,就像服务员用固定频道喊通知,顾客必须调到同一个频道,才能听到;如果端口号不一致,接收方根本收不到广播消息,就像频道对不上,听不到扩音器的声音。

3.3 和TCP/UDP一对一的区别:一张表看懂,不混淆

新手最容易犯的错,就是把广播和TCP/UDP一对一通信搞混,用餐厅类比,再搭配简单的区别,一次性记牢,再也不混淆:

1.  通信方式:TCP/UDP一对一 = 送餐员给单个顾客送菜(一对一);广播 = 服务员用扩音器全员通知(一对多);

2.  连接要求:TCP需要建立连接,UDP一对一不用,但需要指定接收方IP;广播不用建立连接,也不用指定接收方IP,只需要发给广播地址;

3.  适用场景:TCP/UDP一对一 = 单独通知、文件传输(给单个顾客送菜);广播 = 全员通知、设备发现(给所有顾客发通知);

4.  效率:一对一通信,设备越多,效率越低(送菜越多,越慢);广播,不管设备多少,一条消息搞定,效率不变(扩音器一声,所有人都能听到)。

记忆技巧:一对一通信是“精准投喂”,广播是“全员撒网”,按需选择,不用盲目追求“精准”,全员通知场景,广播才是王道。

四、新手必备:Linux广播实操代码,马年直接抄作业

Linux广播的代码,比TCP通信简单太多,核心就是“发送方设置广播权限、发送消息,接收方绑定端口、监听消息”,全程基于UDP协议,注释拉满,新手直接抄,编译后就能运行,实现“发送方发广播,同一局域网内所有接收方都能收到”,全程无难度。

重点说明:代码分为“发送方”和“接收方”两个文件,用Linux C语言编写,编译命令单独标注,新手直接复制代码、编译运行,就能看到效果;所有代码都适配新手,没有复杂逻辑,只保留核心功能,还标注了需要修改的地方(比如广播地址)。

4.1 接收方代码(broadcast_recv.c):顾客听通知,一直监听

接收方代码,严格按照“创建UDP套接字→绑定端口→循环监听”的流程编写,注释拉满,新手能看懂每一步的作用,直接抄就行,不用修改任何内容(除非想换端口):

```Plain Text

#include <stdio.h>

#include <unistd.h>

#include <string.h>

#include <sys/socket.h>

#include <netinet/in.h>

#include <arpa/inet.h>

#define BROADCAST_PORT 8888 // 广播端口,和发送方保持一致(相当于扩音器频道)

#define BUF_SIZE 1024       // 接收缓冲区大小

int main() {

   int sock_fd;

   struct sockaddr_in recv_addr, send_addr;

   socklen_t send_addr_len = sizeof(send_addr);

   char buf[BUF_SIZE] = {0};

   // 1. 创建UDP套接字(相当于打开耳朵,准备听通知)

   // AF_INET:IPv4协议,SOCK_DGRAM:UDP协议,0:默认协议

   sock_fd = socket(AF_INET, SOCK_DGRAM, 0);

   if (sock_fd == -1) {

       printf("套接字创建失败,相当于耳朵没打开,听不到通知~\n");

       return 1;

   }

   // 2. 设置套接字选项,允许接收广播消息(相当于把耳朵调到扩音器频道)

   int opt = 1;

   if (setsockopt(sock_fd, SOL_SOCKET, SO_BROADCAST, &opt, sizeof(opt)) == -1) {

       printf("设置广播接收失败,相当于没调到正确频道,听不到通知~\n");

       close(sock_fd);

       return 1;

   }

   // 3. 绑定端口(固定频道,和发送方一致,才能听到通知)

   memset(&recv_addr, 0, sizeof(recv_addr));

   recv_addr.sin_family = AF_INET;         // IPv4协议

   recv_addr.sin_port = htons(BROADCAST_PORT); // 绑定广播端口

   recv_addr.sin_addr.s_addr = htonl(INADDR_ANY); // 绑定所有本机IP,接收所有广播消息

   if (bind(sock_fd, (struct sockaddr*)&recv_addr, sizeof(recv_addr)) == -1) {

       printf("端口绑定失败,相当于频道没调好,听不到通知~\n");

       close(sock_fd);

       return 1;

   }

   printf("接收方已启动,监听广播端口%d,等待接收广播消息(就像顾客等着听服务员通知)...\n", BROADCAST_PORT);

   // 4. 循环监听广播消息(一直听着,有通知就接收)

   while (1) {

       memset(buf, 0, sizeof(buf));

       // 接收广播消息,同时获取发送方的IP和端口(知道是谁发的通知)

       int recv_len = recvfrom(sock_fd, buf, sizeof(buf), 0,

                              (struct sockaddr*)&send_addr, &send_addr_len);

       if (recv_len == -1) {

           printf("接收广播消息失败,相当于没听到通知~\n");

           continue;

       }

       // 打印收到的广播消息和发送方信息

       printf("收到广播消息(发送方IP:%s,端口:%d):%s\n",

              inet_ntoa(send_addr.sin_addr), ntohs(send_addr.sin_port), buf);

   }

   // 关闭套接字(理论上不会执行到这里)

   close(sock_fd);

   return 0;

}

```

编译命令(新手必记):gcc broadcast_recv.c -o broadcast_recv(直接编译,不用加额外参数)

运行方法:终端敲 ./broadcast_recv,接收方就会启动,绑定8888端口,一直等待接收广播消息,就像顾客打开耳朵,随时准备听服务员的通知。

4.2 发送方代码(broadcast_send.c):服务员喊通知,发送广播

发送方代码,严格按照“创建UDP套接字→设置广播权限→填写广播地址→发送消息”的流程编写,注释拉满,新手只需要修改广播地址(和自己的局域网网段一致),就能直接运行:

```Plain Text

#include <stdio.h>

#include <unistd.h>

#include <string.h>

#include <sys/socket.h>

#include <netinet/in.h>

#include <arpa/inet.h>

#define BROADCAST_PORT 8888          // 广播端口,和接收方保持一致(扩音器频道)

#define BROADCAST_ADDR "192.168.1.255" // 广播地址,替换成自己的局域网广播地址

#define BUF_SIZE 1024                // 发送缓冲区大小

int main() {

   int sock_fd;

   struct sockaddr_in broadcast_addr;

   char buf[BUF_SIZE] = {0};

   // 1. 创建UDP套接字(相当于拿起扩音器)

   sock_fd = socket(AF_INET, SOCK_DGRAM, 0);

   if (sock_fd == -1) {

       printf("套接字创建失败,相当于没拿到扩音器,没法喊通知~\n");

       return 1;

   }

   // 2. 设置套接字选项,允许发送广播消息(相当于打开扩音器开关)

   int opt = 1;

   if (setsockopt(sock_fd, SOL_SOCKET, SO_BROADCAST, &opt, sizeof(opt)) == -1) {

       printf("设置广播发送失败,相当于扩音器没打开,喊了也没人听~\n");

       close(sock_fd);

       return 1;

   }

   // 3. 填写广播地址和端口(相当于对着扩音器,确定通知范围)

   memset(&broadcast_addr, 0, sizeof(broadcast_addr));

   broadcast_addr.sin_family = AF_INET;         // IPv4协议

   broadcast_addr.sin_port = htons(BROADCAST_PORT); // 广播端口,和接收方一致

   // 填写广播地址,替换成自己的局域网广播地址(比如192.168.0.255)

   broadcast_addr.sin_addr.s_addr = inet_addr(BROADCAST_ADDR);

   // 4. 发送广播消息(相当于服务员对着扩音器喊通知)

   while (1) {

       memset(buf, 0, sizeof(buf));

       // 输入要发送的广播消息

       printf("发送方(广播):");

       fgets(buf, sizeof(buf), stdin);

       // 去掉fgets自带的换行符

       buf[strlen(buf)-1] = '\0';

       // 如果输入exit,停止发送广播

       if (strcmp(buf, "exit") == 0) {

           printf("正在停止广播...\n");

           break;

       }

       // 发送广播消息(对着扩音器喊通知,所有顾客都能听到)

       int send_len = sendto(sock_fd, buf, strlen(buf), 0,

                            (struct sockaddr*)&broadcast_addr, sizeof(broadcast_addr));

       if (send_len == -1) {

           printf("发送广播消息失败,相当于扩音器没声音,没人听到~\n");

           continue;

       }

       printf("广播消息已发送,同一局域网内所有接收方均可收到(通知已喊出,坐等顾客收听)...\n");

   }

   // 关闭套接字

   close(sock_fd);

   return 0;

}

```

编译命令(新手必记):gcc broadcast_send.c -o broadcast_send(直接编译,不用加额外参数)

运行方法:先在多台同一局域网的电脑上,启动接收方(./broadcast_recv),再在其中一台电脑上启动发送方(./broadcast_send),修改广播地址(替换成自己的局域网广播地址,用ip addr命令查看网段),输入消息就能发送广播,所有接收方都会实时显示消息,就像服务员喊通知,所有顾客都能听到一样简单。

小提醒:发送方代码中的广播地址(192.168.1.255),一定要替换成自己的局域网广播地址,比如你的电脑IP是192.168.0.100,广播地址就是192.168.0.255;另外,发送方和接收方的端口号必须一致(都是8888),不然接收方收不到广播消息。

五、避坑指南:新手写Linux广播,别再踩这些坑

5.1 陷阱1:广播地址写错,导致接收方收不到消息

新手最容易犯的错:发送方的广播地址写错,比如自己的局域网网段是192.168.0.XXX,却用了192.168.1.255作为广播地址,导致广播消息发错网段,接收方根本收不到,就像服务员对着别的餐厅喊通知,自己餐厅的顾客根本听不到。

避坑妙招:先用ip addr命令,查看自己的电脑IP和网段(比如IP是192.168.0.100,网段就是192.168.0),广播地址就是“网段+255”(192.168.0.255),确保广播地址和自己的局域网网段一致。

5.2 陷阱2:忘记设置广播权限,导致广播发送/接收失败

很多新手复制代码后,忘记调用setsockopt函数设置广播权限,导致发送方发不出广播,接收方收不到广播,就像服务员拿起扩音器,却没打开开关,喊了也没人听;顾客打开耳朵,却没调到正确频道,听不到通知。

避坑妙招:发送方和接收方,都要调用setsockopt函数设置SO_BROADCAST选项,允许发送/接收广播消息,这一步不能少,少了就会失败。

5.3 陷阱3:发送方和接收方端口号不一致,导致接收失败

新手容易犯的错:发送方用8888端口,接收方却用8080端口,导致接收方收不到广播消息,就像服务员用1频道喊通知,顾客却调到2频道,根本听不到。

避坑妙招:确保发送方和接收方的端口号完全一致,代码中默认是8888,要是想换端口,两边要一起换,不能只换一边。

5.4 陷阱4:试图跨局域网发送广播,导致失败

很多新手以为,广播可以跨局域网发送,比如在上海的局域网发广播,想让北京的电脑收到,结果发现接收不到,以为自己代码写错了,其实不是代码的问题,而是广播的特性——只能在同一局域网内传输,跨网段、跨地区都不行。

避坑妙招:接受广播的“局限性”,如果需要跨局域网发送全员通知,就不用广播了,改用其他方式(比如TCP多客户端通信),不要强行用广播,避免做无用功。

5.5 陷阱5:用TCP协议实现广播,导致编译/运行失败

新手容易混淆协议,想用TCP协议实现广播,结果代码编译报错,或者运行后没法发送广播,其实广播只能基于UDP协议实现——TCP是面向连接的,需要指定接收方,而广播是无连接、一对多的,和TCP的特性冲突,根本无法实现。

避坑妙招:牢记,Linux广播只能用UDP协议实现,写代码时,套接字类型一定要是SOCK_DGRAM,不要写成SOCK_STREAM(TCP),避免报错。

六、结尾:Linux广播不难学,马年轻松玩转局域网通信

看到这里,是不是觉得Linux广播一点都不难?其实它就是“餐厅的全员呼叫神器”,核心就是“一台发消息,全员都能收”,基于UDP协议实现,代码简单、流程简洁,只要记住广播地址和端口号的关键,就能轻松实现,不用怕晦涩的术语和函数。

新手不用怕,刚开始不用追求复杂的广播逻辑,先掌握“发送方发广播、接收方收广播”的简单通信,能成功运行代码、看到效果,就足够了。学会Linux广播,你就能应对局域网全员通知、设备发现等场景,不用再被“逐个发送”折磨,编程效率直接翻倍。

记住,广播是Linux局域网通信的核心技能,不管是设备管理、通知推送,还是群消息同步,都离不开它,学会它,能让你对Linux网络编程的理解更上一层楼,离“Linux高手”又近了一步。

2026丙午马年,愿你吃透Linux广播,轻松玩转局域网通信,不踩坑、不懵圈,编写高效网络程序一马当先,早日实现“Linux网络编程自由”!

✨ 关注我,下期解锁Linux组播(精准分组通知),新手也能轻松拿捏Linux ✨

扫码关注我们

知识奇妙世界

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-04-20 20:23:53 HTTP/2.0 GET : https://f.mffb.com.cn/a/486490.html
  2. 运行时间 : 0.093855s [ 吞吐率:10.65req/s ] 内存消耗:5,001.75kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=5a96f87e81f8e8b31b52725fa05e1273
  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.000491s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000756s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000339s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000275s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000494s ]
  6. SELECT * FROM `set` [ RunTime:0.000208s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000588s ]
  8. SELECT * FROM `article` WHERE `id` = 486490 LIMIT 1 [ RunTime:0.000654s ]
  9. UPDATE `article` SET `lasttime` = 1776687833 WHERE `id` = 486490 [ RunTime:0.009821s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.000300s ]
  11. SELECT * FROM `article` WHERE `id` < 486490 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000446s ]
  12. SELECT * FROM `article` WHERE `id` > 486490 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000370s ]
  13. SELECT * FROM `article` WHERE `id` < 486490 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.000717s ]
  14. SELECT * FROM `article` WHERE `id` < 486490 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.006859s ]
  15. SELECT * FROM `article` WHERE `id` < 486490 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.003364s ]
0.095593s