当前位置:首页>Linux>动态控制linux防火墙及休眠唤醒 - 微信小程序MQTT实现

动态控制linux防火墙及休眠唤醒 - 微信小程序MQTT实现

  • 2026-08-18 23:10:35
动态控制linux防火墙及休眠唤醒 - 微信小程序MQTT实现

本文搭建一套基于 NAS 的内网远程管控方案,依托微信小程序实现两大核心功能:

  1. 远程动态调整linux防火墙,仅放行指定 IP 接入
  2. 远程控制NAS主机休眠,支持休眠指定时间后自动唤醒

整套系统以 NAS 作为 7×24 小时运行的控制中枢,内部部署 Mosquitto MQTT 消息服务作为通信枢纽,Broker 同步开启 WebSocket 协议用于前端长连接交互,由于mosqutto原生websocket协议兼容问题,使用 Nginx 反向代理mosqutto的websocket服务。整体只需要对外开启一个端口,并使用密码认证。

一、前言/需求背景

1. 业务痛点

  1. 内网NAS、台式机无法在外网便捷管控,远程访问存在安全隐患;
  2. 防火墙白名单需要频繁修改,传统SSH登录操作繁琐,无移动端可视化操作入口;
  3. 台式机闲置耗电,外出时可一键设置休眠;
  4. 微信小程序无需安装APP,轻量化、随时可用,是最优移动端控制载体。 通过这种方式,可以实现仅允许机主当前所在网络的公网ip访问,配置操作几乎无成本,且大大降低恶意攻击的成功率。

2. 整体实现目标

通过微信小程序,在外网下发控制指令,NAS统一执行两类操作:

  1. 防火墙动态管理:添加/删除指定IP地址及重置为默认规则;
  2. 电脑电源管控:使用rtcwake设置休眠时长、时间到达后自动唤醒; 基于MQTT消息队列解耦,Nginx做WSS反向代理适配小程序网络限制。 如果休眠一段时间后,需要提前唤醒,需要搭配wol机制,现在的家庭路由器一般都有远程唤醒功能,或者有对应的插件。

二、整体技术架构详解

1. 技术栈清单

层级
技术组件
作用说明
移动端
uni-app + mqtt.js
微信小程序,下发指令、展示状态
网关代理
Nginx
18443端口WebSocket协议转发、域名统一入口
消息队列
Mosquitto
消息订阅分发,解耦小程序与NAS后端服务
NAS后端
Node
订阅MQTT指令,调用系统脚本管控防火墙、电脑电源
底层系统
nftables rtcwake
防火墙规则修改、设置休眠时长

2. 架构流程图说明

3. 核心设计优势

  1. 解耦架构:MQTT消息中间件隔离前端与底层系统,小程序无需直连NAS内网端口,安全隔离;
  2. 适配小程序限制:小程序强制要求WSS加密、443标准端口,Nginx统一处理证书与端口转发;
  3. 低资源占用:Mosquitto轻量运行在NAS,长连接低功耗,不占用大量系统资源;
  4. 可扩展:新增设备控制逻辑仅需拓展NAS服务,前端无需大幅改造;
  5. 安全可控:Mosquitto开启账号密码鉴权,防火墙仅放行指定IP,双层安全防护。

三、核心组件部署配置

1. Mosquitto配置(开启WebSocket支持)

listener 8083 172.18.0.1protocol websocketsallow_anonymous falsepassword_file /etc/mosquitto/users.passacl_file /etc/mosquitto/aclfilemax_inflight_bytes 1048576max_inflight_messages 20max_keepalive 300max_packet_size 524288max_queued_bytes 4194304max_qos 2max_queued_messages 1000retain_available truemax_connections 30

这种方式配置的websocket协议,在浏览器中无法连接,使用nginx进行一次代理就可以了。

2. Nginx WSS反向代理配置(适配小程序)

除了使用小程序控制,也可以打包成h5页面,部署到nginx中,这样通过浏览器也可以进行操作。小程序中可连接的websocket地址,需要到小程序管理后台配置,不如h5页面自由灵活。

server {    listen 18443 ssl;    server_name mqtt.sskxyz.top;    ssl_certificate_key /etc/nginx/certs/privkey.pem;    ssl_certificate /etc/nginx/certs/fullchain.pem;    ssl_protocols  TLSv1.2  TLSv1.3;    ssl_prefer_server_ciphers on;    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305;    ssl_session_cache   shared:SSL:512k;    ssl_session_tickets off;    ssl_stapling on;    ssl_stapling_verify on;    ssl_session_timeout  5m;	# 代理mosquitto websocket协议    location = /ws {        proxy_pass http://172.18.0.1:8083;        proxy_http_version 1.1;        proxy_set_header Upgrade $http_upgrade;        proxy_set_header Connection "upgrade";        proxy_set_header Host $host;        proxy_read_timeout 30s;        proxy_send_timeout 30s;        proxy_connect_timeout 30s;        proxy_buffering off;    }    # h5页面部署    location /wxwork/ {        root /opt/websites/web;        try_files $uri $uri/index.html /wxwork/index.html;    }	# 兼容jsonp的公网地址获取配置    location /ipaddr {        default_type application/javascript;        if ($request_method = OPTIONS) {            add_header Access-Control-Allow-Origin *;            add_header Access-Control-Allow-Methods GET,OPTIONS;            return 204;        }        # 没有callback就默认json格式        if ($arg_callback = "") {            return 200 '{"ip":"$remote_addr"}';        }        # 有callback = 返回标准JSONP格式        return 200 "$arg_callback({\"ip\":\"$remote_addr\"});";    }}

3. NAS控制服务核心逻辑简述

  1. 启动时连接本地Mosquitto,订阅指令Topic: bussiness/nftables;
  2. 消息JSON格式规范示例:
// 防火墙修改指令{"action""add/remove/reset","ip_addr""114.xx.xx.xx"}// 电脑定时休眠指令{"action""sleep","duration"60}
  1. 使用node实现本地命令调用,日志记录到sqlite中:

防火墙控制:

import net from 'net'import type { IService } from './service';import type { Action } from '../models/model';import { executeShellCommand, Sqlite } from '../utils'const insertStmt = 'INSERT INTO firewall_rules (ip_addr, action) VALUES (?, ?)';const updateStmt = 'UPDATE firewall_rules SET status = ?, updated_at = CURRENT_TIMESTAMP WHERE id = ?';export class NftablesService implements IService {    support(context: Action): boolean {        return ['add', 'remove', 'reset'].includes(context.action)    }    execute(context: Action): Promise<string> {        let { action, ip_addr } = { ...context }        if (!net.isIP(ip_addr!)) {            console.error(`[-] 安全拦截: 无效的 IP 地址格式 "${ip_addr}"`);            return Promise.reject(`无效的 IP 地址格式 ${ip_addr}`)        }        let nftCommand = this.command(action, ip_addr!)        const id: number | bigint = Sqlite.insert(insertStmt, ip_addr, action)        return executeShellCommand(nftCommand).then(resp => {            Sqlite.update(updateStmt, 'success', id)            return resp;        }).catch(err => {            console.error(`[CMD Error] 命令执行失败: ${err}`);            Sqlite.update(updateStmt, id, 'failed')            return err;        })    }    command(action: string, ip_addr: string): string {        let nftCommand = 'nft list ruleset '        switch (action) {            case 'add':                nftCommand = `nft add element inet filter allowed_dynamic { ${ip_addr} }`;                break;            case 'remove':                nftCommand = `nft delete element inet filter allowed_dynamic { ${ip_addr} }`;                break;            case 'reset':                nftCommand = 'nft -f /etc/nftables.conf'                break;        }        return nftCommand;    }}

休眠控制:

import { Action } from "../models/model";import { IService } from "./service";import { executeShellCommand } from "../utils";export class SuspendService implements IService {    support(context: Action): boolean {        return context.action === 'sleep'    }    execute(context: Action): Promise<string> {        let { duration } = { ...context }        let wake_time = Math.floor(Date.now() / 1000) + duration! * 60;        let nftCommand = `rtcwake -t ${wake_time}  -vm mem`        return executeShellCommand(nftCommand).then(res => {            console.info("- 执行休眠成功")            return `执行休眠成功: ${res}`        }).catch(err => {            console.error(`- 执行休眠失败: ${err}`)            return `执行休眠成功: ${err}`        })    }}

4. 控制界面效果

H5示例

小程序示例: 

四、附录

以上内容解决了白天nas访问、休眠控制的问题,如果希望晚上11点到早上8点,nas自动休眠,可以配置一个定时脚本,之前有介绍过,这里再贴一下:

休眠控制脚本:

#!/bin/bashfunctiondisable() {#sed -i 's/AllowSuspend=.*/AllowSuspend=no/' /etc/systemd/sleep.confprintf'%s\n'',s/AllowSuspend=.*/AllowSuspend=no/g' w q | ed -s /etc/systemd/sleep.conf}functionenable() {#sed -i 's/AllowSuspend=.*/AllowSuspend=yes/' /etc/systemd/sleep.confprintf'%s\n'',s/AllowSuspend=.*/AllowSuspend=yes/g' w q | ed -s /etc/systemd/sleep.conf}functionstatus() {    yes_no=$(sed -n '/AllowSuspend=/p' /etc/systemd/sleep.conf  | cut -d '=' -f2)echo$yes_no}curr_time=$(date +%H%M)wake_time=$(date -d "next day 08:05" +%s)stat=$(status)if [ $curr_time -gt 2230 -o $curr_time -lt 0800 ];thenif [ "no" = $stat ];thenenablefi    rtcwake -t $wake_time  -vm memelseif [ "yes" = $stat ];thendisablefifi

systemd定时器:

root@fnos:~# systemctl cat sched_sleep.service# /lib/systemd/system/sched_sleep.service[Unit]Description=Schedule Sleep FNOS[Service]Type=oneshotUser=rootExecStart=/root/sleep.sh[Install]WantedBy=multi-user.target# 定时配置,每10分钟执行一次root@fnos:~# systemctl cat sched_sleep.timer# /lib/systemd/system/sched_sleep.timer[Unit]Description=Schedule Sleep FNOS[Timer]OnCalendar=*:0/5RandomizedDelaySec=10mPersistent=true[Install]WantedBy=timers.target

防火墙参考配置: 仅允许18443这一个端口对外可访问,供小程序和h5连接,将来源IP地址通过小程序加入后,才可以访问其它服务,将服务暴露范围最小化。 如果有vpn服务也可以对外暴露,但要配置比较安全的证书和用户名密码。

#!/usr/sbin/nft -fflush rulesettable inet filter {set allowed_dynamic {type ipv4_addr; flags dynamic    }    chain input {type filter hook input priority filter; policy drop        ip6 nexthdr icmpv6 counter accept        udp dport mdns counter accept        ct state related,established counter accept        iifname "lo" accept        iifname "enp0s31f6-ovs" udp dport { 53, 67 } accept        iifname "enp0s31f6-ovs" tcp dport { 53, 67 } accept        ip saddr { 192.168.5.0/24, 10.8.0.0/24, 172.18.0.0/24 } counter accept        tcp dport { 61194, 8883 } counter accept        ip saddr @allowed_dynamic tcp dport { 5667,60022 } counter accept    }    chain forward {type filter hook forward priority filter; policy drop        ct state related, established counter accept        ip daddr 172.18.0.2 tcp dport 18443 counter accept        ip saddr @allowed_dynamic iifname "enp0s31f6-ovs"  counter accept        ip saddr 192.168.5.0/24 counter accept        iifname { "tun0""br-691295fe2d05" } counter accept    }    chain output {type filter hook output priority filter; policy accept    }}table inet nat {    chain postrouting {type nat hook postrouting priority srcnat        ip saddr 10.8.0.0/24 counter masquerade        ip saddr 172.18.0.0/24 counter masquerade    }    chain prerouting {type nat hook prerouting priority dstnat        ip daddr 192.168.5.254 tcp dport 18443 counter dnat to 172.18.0.2:18443        ip daddr 192.168.5.254 tcp dport { 443, 8443 } counter dnat to 172.18.0.2:443        ip daddr 192.168.5.254 tcp dport 3000 counter dnat to 172.18.0.6:3000        ip daddr 192.168.5.254 tcp dport 9090 counter dnat to 172.18.0.8:9090        ip daddr 192.168.5.254 tcp dport 18789 counter dnat to 172.18.0.168:18789        ip daddr 192.168.5.254 tcp dport 18790 counter dnat to 172.18.0.168:18790        ip daddr 192.168.5.254 tcp dport 3001 counter dnat to 172.18.0.20:3000        ip daddr 192.168.5.254 tcp dport 12345 counter dnat to 172.18.0.99:12345        ip daddr 192.168.5.254 tcp dport 54321 counter dnat to 172.18.0.200:5432    }}

在做了上面这些之后,我就把安全中心这个应用卸载掉了。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-08-21 14:38:19 HTTP/2.0 GET : https://f.mffb.com.cn/a/504897.html
  2. 运行时间 : 0.549332s [ 吞吐率:1.82req/s ] 内存消耗:4,828.74kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=74b4b9bf784b5d5b1d6b9fa824f57bf8
  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.000908s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001605s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.010444s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000737s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001464s ]
  6. SELECT * FROM `set` [ RunTime:0.000538s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.002580s ]
  8. SELECT * FROM `article` WHERE `id` = 504897 LIMIT 1 [ RunTime:0.030827s ]
  9. UPDATE `article` SET `lasttime` = 1787294299 WHERE `id` = 504897 [ RunTime:0.002453s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.000673s ]
  11. SELECT * FROM `article` WHERE `id` < 504897 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001859s ]
  12. SELECT * FROM `article` WHERE `id` > 504897 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.018657s ]
  13. SELECT * FROM `article` WHERE `id` < 504897 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.080824s ]
  14. SELECT * FROM `article` WHERE `id` < 504897 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.071682s ]
  15. SELECT * FROM `article` WHERE `id` < 504897 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.145230s ]
0.555327s