当前位置:首页>java>配置中心 - 不用改代码就能改配置

配置中心 - 不用改代码就能改配置

  • 2026-01-31 05:09:26
配置中心 - 不用改代码就能改配置

一、配置管理的烦恼

场景1:数据库密码改了

以前:每个微服务都连数据库,密码改了得:

  1. 改user-service的application.yml

  2. 改order-service的application.yml

  3. 改product-service的application.yml

  4. 每个服务都得重启

  5. 生产环境还得走发布流程

太麻烦了!

场景2:双11活动配置

活动期间:

  • 商品打8折

  • 满200减30

  • 限时抢购

以前:改配置 -> 打包 -> 发布 -> 重启

活动都结束了,服务还没重启完!

场景3:不同环境不同配置

  • 开发环境:用本地数据库

  • 测试环境:用测试数据库

  • 生产环境:用生产数据库

以前:打包时切换profile,容易出错!

二、配置中心是啥?

就像公司的公告板

  • 所有配置都写在公告板上

  • 员工(微服务)每天上班先看公告板

  • 公告板改了,员工自动知道

  • 不用每个人挨个通知

配置中心的好处:

  1. 一处改,处处生效

  2. 热更新:不用重启服务

  3. 版本管理:可以回滚

  4. 权限控制:谁能改配置

  5. 环境隔离:开发、测试、生产分开

三、为啥选Nacos配置中心?

配置中心

优点

缺点

适用场景

Spring Cloud Config

Spring亲儿子,集成好

需要配合Git,功能简单

简单项目

Apollo

功能强大,界面好

部署复杂,太重

大厂,复杂项目

Nacos

配置+注册一体,轻量

功能不如Apollo全

中小项目,Spring Cloud Alibaba

Consul

配置+注册+健康检查

对Spring Cloud支持一般

Go项目多

咱们选Nacos,因为

  1. 已经用Nacos做注册中心了

  2. 配置管理功能够用

  3. 跟Spring Cloud Alibaba集成好

  4. 部署简单

四、Nacos配置中心原理

1. 拉模式(Pull)

// 服务启动时1. 从Nacos拉取配置2. 加载到Spring环境3. 创建Bean// 定时任务每30秒拉取一次,检查配置变没变

2. 推模式(Push)

1. 配置改了,Nacos通知服务2. 服务收到通知,拉取新配置3. 刷新Bean(@RefreshScope)

3. 配置结构

Data ID: user-service-dev.yamlGroup: DEFAULT_GROUPNamespace: dev相当于:文件位置:dev/DEFAULT_GROUP/user-service-dev.yaml

五、开整!把配置挪到Nacos

步骤1:Nacos控制台加配置

  1. 访问http://localhost:8848/nacos

  2. 左边菜单:配置管理 -> 配置列表

  3. 点右上角:+

配置1:用户服务公共配置

Data ID: user-service.yamlGroup: DEFAULT_GROUP配置格式: YAML配置内容:server:  port: 8081spring:  datasource:    url: jdbc:mysql://localhost:3306/user_db?useSSL=false    username: root    password: 123456    driver-class-name: com.mysql.cj.jdbc.Driver  jackson:    date-format: yyyy-MM-dd HH:mm:ss    time-zone: GMT+8

配置2:用户服务开发环境

Data ID: user-service-dev.yamlGroup: DEFAULT_GROUP配置内容:spring:  datasource:    url: jdbc:mysql://localhost:3306/user_db_dev?useSSL=falselogging:  level:    com.example: debug

配置3:用户服务生产环境

Data ID: user-service-prod.yamlGroup: DEFAULT_GROUP配置内容:spring:  datasource:    url: jdbc:mysql://prod-mysql:3306/user_db?useSSL=false    password: ${DB_PASSWORD:强密码}logging:  level:    com.example: info

步骤2:改造user-service

1. 加依赖

pom.xml

<dependency>    <groupId>com.alibaba.cloud</groupId>    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><!-- 配置刷新 --><dependency>    <groupId>org.springframework.cloud</groupId>    <artifactId>spring-cloud-starter-bootstrap</artifactId></dependency>

2. 加配置文件

bootstrap.yml重点!必须用这个文件名):

spring:  application:    name: user-service  # 服务名,一定要有!  cloud:    nacos:      config:        server-addr: localhost:8848  # Nacos地址        file-extension: yaml  # 配置文件格式        group: DEFAULT_GROUP  # 分组,默认就是这个        namespace: dev  # 命名空间,对应环境        # 配置内容(重要!)        # 1. 先加载user-service.yaml(公共配置)        # 2. 再加载user-service-dev.yaml(环境配置)        # 3. 最后加载本地application.yml        extension-configs:          - data-id: user-service.yaml            group: DEFAULT_GROUP            refresh: true  # 是否刷新          - data-id: user-service-${spring.profiles.active}.yaml            group: DEFAULT_GROUP            refresh: true

application.yml(本地保留少量配置):

# 这里只放本地特有的配置,或者默认值spring:  profiles:    active: dev  # 激活的环境  # 本地可以覆盖Nacos的配置  # 但建议能放Nacos就放Nacos

3. 测试配置生效

@RestController@RequestMapping("/config")public class ConfigController {    @Value("${server.port}")    private String port;    @Value("${spring.datasource.url}")    private String dbUrl;    @Value("${logging.level.com.example}")    private String logLevel;    @GetMapping("/show")    public Map<String, String> showConfig() {        Map<String, String> config = new HashMap<>();        config.put("port", port);        config.put("dbUrl", dbUrl);        config.put("logLevel", logLevel);        return config;    }}

访问http://localhost:8081/config/show,应该显示Nacos里的配置。

六、配置动态刷新(热更新)

场景:双11改折扣

商品服务有个折扣配置:

# 在Nacos配置sale:  discount: 0.8  # 8折

步骤1:创建配置Bean

@Component@ConfigurationProperties(prefix = "sale")@RefreshScope  // 重点!支持动态刷新@Datapublic class SaleConfig {    private Double discount = 1.0;  // 默认不打折    private Integer fullReduction = 0;  // 满减    private Boolean flashSale = false;  // 是否限时抢购}

步骤2:使用配置

@RestController@RequestMapping("/product")public class ProductController {    @Autowired    private SaleConfig saleConfig;    @GetMapping("/price/{originalPrice}")    public Double calculatePrice(@PathVariable Double originalPrice) {        // 动态读取配置        return originalPrice * saleConfig.getDiscount();    }    @GetMapping("/config")    public SaleConfig getConfig() {        return saleConfig;    }}

步骤3:测试热更新

  1. 启动服务,访问http://localhost:8083/product/config

  2. 看到折扣是0.8(8折)

  3. 不要重启服务,去Nacos控制台

  4. 修改product-service.yaml

    sale:  discount: 0.7  # 改成7折  fullReduction: 30  # 满200减30
  5. 发布

  6. 刷新页面,配置自动变成7折

七、配置的优先级(重要!)

加载顺序(后加载的覆盖先加载的):

  1. bootstrap.yml(本地,最高优先级)

  2. Nacos扩展配置(extension-configs,按数组顺序)

  3. Nacos共享配置(shared-configs)

  4. Nacos主配置(data-id: ${spring.application.name}.yaml)

  5. application.yml(本地,最低优先级)

示例配置:

spring:  cloud:    nacos:      config:        # 1. 先加载 common.yaml(基础配置)        extension-configs[0]:          data-id: common.yaml          group: DEFAULT_GROUP          refresh: true        # 2. 再加载 middleware.yaml(中间件配置)        extension-configs[1]:          data-id: middleware.yaml          group: DEFAULT_GROUP          refresh: true        # 3. 加载应用配置        # data-id: user-service.yaml(根据spring.application.name)        # 4. 最后加载环境配置        # data-id: user-service-dev.yaml

共享配置(所有服务都用)

Data ID: common.yaml内容:spring:  jackson:    date-format: yyyy-MM-dd HH:mm:ss    time-zone: GMT+8mybatis:  configuration:    map-underscore-to-camel-case: true
# 在bootstrap.yml里shared-configs:  - data-id: common.yaml    group: DEFAULT_GROUP    refresh: true

八、多环境配置

方案1:用Namespace(命名空间)

  1. 在Nacos创建命名空间:

    • dev(开发)

    • test(测试)

    • prod(生产)

  2. 每个环境一套配置

  3. 服务启动时指定namespace

spring:  cloud:    nacos:      config:        namespace: dev  # 开发环境        # 或者用环境变量        namespace: ${NACOS_NAMESPACE:dev}

方案2:用Group(分组)

spring:  profiles:    active: dev  cloud:    nacos:      config:        group: ${spring.profiles.active}  # 根据环境选分组

方案3:用Data ID后缀

Data ID格式:${spring.application.name}-${环境}.yaml例如:- user-service-dev.yaml- user-service-test.yaml- user-service-prod.yaml
spring:  cloud:    nacos:      config:        # 自动拼接环境        name: ${spring.application.name}        file-extension: yaml        # Nacos会找:user-service-dev.yaml

九、敏感配置加密

场景:数据库密码不能明文存

步骤1:加Jasypt依赖

<dependency>    <groupId>com.github.ulisesbocchio</groupId>    <artifactId>jasypt-spring-boot-starter</artifactId>    <version>3.0.5</version></dependency>

步骤2:生成加密值

@SpringBootApplicationpublic class TestApp {    public static void main(String[] args) {        StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();        encryptor.setPassword("mySecretKey");  // 加密密钥        String encrypted = encryptor.encrypt("123456");        System.out.println("加密后: " + encrypted);        // 输出:g8N5jJYVWp9jF6Bz8n4K7Q==    }}

步骤3:Nacos配置用加密值

spring:  datasource:    password: ENC(g8N5jJYVWp9jF6Bz8n4K7Q==)  # 用ENC()包裹

步骤4:启动时传入密钥

# 方式1:启动参数java -jar app.jar --jasypt.encryptor.password=mySecretKey# 方式2:环境变量export JASYPT_ENCRYPTOR_PASSWORD=mySecretKeyjava -jar app.jar# 方式3:配置文件(不安全)# jasypt.encryptor.password=mySecretKey

十、配置的最佳实践

1. 配置分类存放

Nacos配置:├── common.yaml(所有服务共享)├── middleware.yaml(中间件配置)├── user-service.yaml(用户服务配置)├── user-service-dev.yaml(开发环境)└── user-service-prod.yaml(生产环境)

2. 配置版本管理

  • 每次修改前备份

  • 使用配置历史功能

  • 重要配置变更要评审

3. 配置监控

@Componentpublic class ConfigChangeListener {    // 监听配置变更    @EventListener    public void handleRefresh(RefreshScopeRefreshedEvent event) {        System.out.println("配置已刷新: " + new Date());        // 发送通知        // 记录日志        // 刷新缓存    }}

4. 配置回滚

  1. Nacos控制台 -> 配置详情 -> 历史版本

  2. 选择要回滚的版本

  3. 回滚

  4. 所有服务自动生效

5. 配置检查

@RestController@RequestMapping("/actuator")public class ConfigCheckController {    @Autowired    private Environment environment;    @GetMapping("/config-check")    public Map<String, Object> checkConfig() {        Map<String, Object> result = new HashMap<>();        // 检查必要配置        String[] requiredProps = {            "spring.datasource.url",            "spring.datasource.username",            "spring.redis.host"        };        for (String prop : requiredProps) {            String value = environment.getProperty(prop);            result.put(prop, value != null ? "OK" : "MISSING");        }        return result;    }}

十一、常见问题解决

1. 配置不生效

原因:加载顺序问题

解决

# bootstrap.ymlspring:  cloud:    nacos:      config:        # 明确指定加载哪些配置        extension-configs[0]:          data-id: common.yaml          group: DEFAULT_GROUP          refresh: true        extension-configs[1]:          data-id: ${spring.application.name}.yaml          group: DEFAULT_GROUP          refresh: true

2. 动态刷新不生效

原因

  1. 没加@RefreshScope

  2. 配置没在Nacos里

  3. 没加spring-cloud-starter-bootstrap

解决

// 1. 类上加@RefreshScope// 2. 确保配置在Nacos// 3. 检查依赖

3. 配置冲突

现象:本地配置覆盖了Nacos配置

解决

# application.yml里尽量少放配置# 只放本地测试需要的spring:  cloud:    nacos:      config:        override-none: true  # 本地不覆盖远程        override-system-properties: false  # 系统属性不覆盖

4. 启动报错:找不到配置

原因:Nacos连接失败或配置不存在

解决

spring:  cloud:    nacos:      config:        # 允许配置不存在        refresh-enabled: true        # 设置超时        timeout: 3000        # 失败重试        max-retry: 3        retry-interval: 1000

十二、实际项目配置示例

完整bootstrap.yml

spring:  application:    name: user-service  profiles:    active: ${PROFILE:dev}  # 从环境变量读取  cloud:    nacos:      config:        server-addr: ${NACOS_HOST:localhost}:${NACOS_PORT:8848}        username: ${NACOS_USERNAME:nacos}        password: ${NACOS_PASSWORD:nacos}        namespace: ${NACOS_NAMESPACE:dev}        file-extension: yaml        refresh-enabled: true        # 共享配置(所有服务)        shared-configs:          - data-id: common.yaml            group: COMMON_GROUP            refresh: true          - data-id: datasource.yaml            group: MIDDLEWARE_GROUP            refresh: true          - data-id: redis.yaml            group: MIDDLEWARE_GROUP            refresh: true        # 扩展配置(本服务)        extension-configs:          - data-id: ${spring.application.name}.yaml            group: DEFAULT_GROUP            refresh: true          - data-id: ${spring.application.name}-${spring.profiles.active}.yaml            group: DEFAULT_GROUP            refresh: true# 本地默认值(开发环境方便)server:  port: 8081logging:  level:    root: info    com.example: debug

Nacos配置文件示例

common.yaml(所有服务共享):

# 应用通用配置app:  version: 1.0.0  env: ${spring.profiles.active}# 日期时间格式spring:  jackson:    date-format: yyyy-MM-dd HH:mm:ss    time-zone: GMT+8    default-property-inclusion: non_null  # 文件上传  servlet:    multipart:      max-file-size: 10MB      max-request-size: 10MB# 日志logging:  pattern:    console: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"

datasource.yaml(数据库配置):

spring:  datasource:    type: com.zaxxer.hikari.HikariDataSource    driver-class-name: com.mysql.cj.jdbc.Driver    hikari:      minimum-idle: 5      maximum-pool-size: 20      idle-timeout: 30000      max-lifetime: 1800000      connection-timeout: 30000      connection-test-query: SELECT 1# Mybatismybatis:  configuration:    map-underscore-to-camel-case: true    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

十三、今儿个总结

学会了啥?

  1. ✅ 配置中心的作用(一处改,处处生效)

  2. ✅ Nacos配置中心的使用

  3. ✅ 配置文件加载顺序

  4. ✅ 动态刷新(@RefreshScope)

  5. ✅ 多环境配置

  6. ✅ 配置加密

  7. ✅ 最佳实践

关键点

  1. bootstrap.yml优先加载

  2. @RefreshScope支持热更新

  3. 命名空间隔离环境

  4. 配置优先级要清楚

  5. 敏感信息要加密

十四、明儿个学啥?

明天咱学分布式事务

  • 用户下单,扣库存,这两步要一起成功或一起失败

  • 跨服务的事务怎么保证一致性

  • Seata是啥,咋用

  • 分布式事务的几种方案

明天咱解决钱不能算错的问题!💰

猜您喜欢
往期精选▼

1. 2026年SpringCloudAlibaba全家桶+三个全栈零基础实战项目

2. 别再瞎学了!这才是Java基础最正确的打开方式,少走90%弯路

3. Spring Boot4.0整合RabbitMQ死信队列实战

4. Spring Boot + Redis 分布式锁:看门狗 Lua 脚本实战

5. 告别手写接口文档!SpringBoot + Swagger3.0自动化方案

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-02-08 16:52:35 HTTP/2.0 GET : https://f.mffb.com.cn/a/462926.html
  2. 运行时间 : 0.089799s [ 吞吐率:11.14req/s ] 内存消耗:4,639.80kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=920feda56d26c92e306570feb90a3be5
  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.000471s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000831s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000329s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000299s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000458s ]
  6. SELECT * FROM `set` [ RunTime:0.000182s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000603s ]
  8. SELECT * FROM `article` WHERE `id` = 462926 LIMIT 1 [ RunTime:0.000511s ]
  9. UPDATE `article` SET `lasttime` = 1770540755 WHERE `id` = 462926 [ RunTime:0.009802s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 65 LIMIT 1 [ RunTime:0.000220s ]
  11. SELECT * FROM `article` WHERE `id` < 462926 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000416s ]
  12. SELECT * FROM `article` WHERE `id` > 462926 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000506s ]
  13. SELECT * FROM `article` WHERE `id` < 462926 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.005978s ]
  14. SELECT * FROM `article` WHERE `id` < 462926 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.000599s ]
  15. SELECT * FROM `article` WHERE `id` < 462926 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.003482s ]
0.091405s