当前位置:首页>python>虚拟线程杀死了Java养Python AI

虚拟线程杀死了Java养Python AI

  • 2026-08-21 11:56:20
虚拟线程杀死了Java养Python AI

虚拟线程杀死了Java养Python AI

我昨天遇到一件很扎心的事。

一家做了八年Java的电商公司,架构师跟我倒苦水:他们的AI团队三年前为了让推荐模型上线,硬生生在Spring Boot旁边又起了一套Python微服务栈——FastAPI + Celery + Redis + 几台GPU推理节点。三年下来,这套旁路栈吞掉了近四百万的运维预算,团队里同时养着Java和Python两套发布流水线、两套监控、两套告警、两套CVE补丁流程。每次模型升级都要在两套语言之间做协议胶水,定位一个跨栈调用超时的问题平均要花半天,on-call工程师经常在凌晨被叫起来排查FastAPI和Spring Cloud Gateway之间的证书过期问题。

我问他:为什么不合并回Java?

他愣了五秒说:因为Java调LLM会阻塞线程啊。

这句话在2024年是对的,在2025年勉强还对,在2026年7月,已经完全错了。理由是:那个"Java养Python AI"的故事,底层的性能账、体验账、基础设施账,三本账在最近十二个月里被同时翻盘了。

那个流传五年的"Java调AI会卡死",是一笔糊涂账

这个误解的根源很简单:传统Java里一个HTTP请求线程对应一个OS线程,OS线程占大约1MB栈空间。LLM调用动辄300到2000毫秒,一个线程被LLM卡住,OS线程就真真切切被占住几十秒。如果你要支撑一万个并发LLM调用,光线程栈就要吃掉10GB内存。所以"Java不适合AI"的说法,本质是"传统Java线程模型不适合I/O密集型AI调用"——这个推理的每一步都是对的,唯一的错是把它当成"Java的固有缺陷"。

但这个前提在JDK 21已经不存在了。虚拟线程(Virtual Thread)让JVM在少量OS carrier线程上调度上百万个轻量级线程,一个虚拟线程等LLM响应时,JVM立刻把它park掉,OS线程立刻去跑别的虚拟线程。整个过程零OS上下文切换、零回调地狱、零反应式编程。你写的是干干净净的同步代码:

@GetMapping("/recommend") public List<Product> recommend(@RequestParam String userId) throws Exception {     // 看起来是同步阻塞,但实际不占OS线程     String context = vectorStore.search(userId).get();     return chatClient.prompt()         .system("你是推荐引擎")         .user("用户ID:" + userId + ",历史:" + context)         .call()         .entity(List.class); } 

这段代码在十年前是性能灾难,在今天能在8核机器上撑住上万个并发。没有任何反应式框架、没有回调链、没有Mono/Flux,Java工程师用最熟悉的"一步一步往下写"就能拿到并发红利。性能层面的借口在Spring Boot 3.2默认启用虚拟线程之后基本被堵死了。

到这里还没完。上一代Java AI服务为了绕开阻塞模型,不得不用WebFlux + R2DBC + 各种reactive适配器,最后发现响应式编程的学习曲线和bug率反而是新的负担。虚拟线程让大家回到最朴素的"同步代码 = 好维护"的开发哲学。Vlad Mihalcea做过一个对比:在相同并发下,虚拟线程版的Spring Boot比WebFlux版的内存占用低40%,P99延迟低15%。这不是小幅优化,是"Java AI服务为何要单独绕一圈去Python"的根本性质疑。

反过来看,这也解释了为什么过去五年大量"AI团队必须用Python"的论调本质上是基础设施没跟上时代的临时妥协。Datadog 2026年的报告显示,Java服务在AI集成场景的占比从2023年的9%回升到了18%,反弹的全部动力来自虚拟线程的成熟。如果你的Java团队还卡在2022年的"必须上Python栈"思维里,大概率是被历史包袱锁住了——而不是被任何技术必要性逼的。

Spring AI 2.0 把Java的AI开发体验拉到了Python同一档

光有虚拟线程不够。如果Java调用LLM还是要靠手撸HTTP+JSON解析+重试+Token计算,那团队维护成本仍然比不过Python那几行requests+langchain。

Spring AI 2.0 GA在2026年6月12日发布之后,这个差距被彻底抹平了。它干了三件让Java团队能合上Python栈的事。

第一,ChatClient统一入口。过去大家混用ChatClient和ChatModel,工具调用、重试、记忆管理全靠手动塞。2.0里ChatClient.create(chatModel)是唯一正统入口,工具调用、Advisor拦截、ChatMemory、VectorStore全部变成可组合的链式调用。最关键的破坏性变化是:2.0里如果你的代码里还有`chatModel.call(prompt)`并依赖模型自己处理工具调用,工具不会执行了——必须走ChatClient。这意味着一个Java开发可以用和写Spring MVC一样的方式写AI服务,团队不需要再为"AI"单独培训一套Python工程师。

第二,@Tool注解把业务方法直接暴露给模型。原来在Python里你要写一堆function calling的schema定义,模型才知道能调什么。Spring AI 2.0里:

@Tool(description = "查询用户最近的订单") public List<Order> recentOrders(@ToolParam String userId) {     return orderService.findRecent(userId); }  ChatClient chat = ChatClient.create(chatModel); String answer = chat.prompt()     .user("我最近买了什么?")     .tools(new OrderTools())     .call()     .content(); 

写到这里就和写普通Service没有任何区别。同样的能力在Python里要写三倍代码,外加一个schema版本管理噩梦。

第三,动态工具发现省token。在工具多(50+)的场景,2.0的新机制能省34%到64%的输入token——这直接打到AI服务的运营成本要害。原来为了token省钱你才需要Python栈里更精细的控制,现在Java栈里也有这能力了。

把这三件事放在一起看,Spring AI 2.0本质上完成了"AI工程的Java化"。过去Python生态靠LangChain、LlamaIndex、LangGraph这一套独立生态抢走了Java工程师的AI机会,现在Spring AI把同一套能力以注解和配置的形式重新交给Java——更准确地说,是把AI工程变成了Spring应用的一个新切面。这不是框架的胜利,是"AI必须用Python"这个伪命题的终点。

飞书知识库里那篇《Java事务机制深度解析》讲过:Spring用@Transactional把事务边界显式声明出来,让开发者不必关心底层连接的开关、提交时机、回滚触发条件,复杂性被"事务"这个抽象接管了。ChatClient这条链本质上就是一个"AI事务"——模型调用、工具执行、记忆读写、向量检索、安全过滤,每一步要么都成功,要么按Advisor定义的策略回滚(重新生成、降级、跳过)。Java工程师不需要在每一处手动try-catch重试,因为Advisor已经把"事务传播行为"封装好了。写AI和写数据库事务,思维模型是一回事。

MCP 7月28日新版落地,Java AI服务的"水电气"终于齐了

如果说Spring AI 2.0解决的是"Java能不能干AI",那MCP(Model Context Protocol)解决的是"Java AI服务能不能在生产长期运行"。

MCP被业界类比成"AI的USB-C",意思是统一了模型和工具/数据源之间的接口。Spring AI 1.1起就原生支持MCP——Java应用既能消费外部MCP Server的能力,也能把自己的业务方法暴露成MCP Server给其他Agent调用。这是Java企业级AI生态真正补齐"水电气"的一步。

但MCP在过去一年有个硬伤:协议本身是有状态的。Server必须维护session,这导致sticky路由、扩容受限、负载均衡不友好。生产部署里只有约5%的MCP Server真正跑在生产环境,其余95%还在开发者的笔记本电脑上。最大的拦路虎是认证——OAuth 2.1的token生命周期和长跑Agent会话对不上,企业级授权扩展虽然已经稳定,但生态接入还在早期。

3天之后的2026年7月28日,MCP 2026-07-28规范正式发布。这次的核心变化是把协议核心变成无状态的:

 会话创建/恢复/迁移标准化,Server重启和扩容对客户端透明

 资源读取引入TTL缓存控制(直接借鉴HTTP Cache-Control语义)

 元数据层加入W3C Trace Context传播,分布式追踪可以从宿主应用一路跟到MCP Server再跟到下游调用

对Java团队的影响很直接:以前你要在Spring Cloud Gateway那一层自己做session sticky,现在交给MCP原生层就行;以前跨服务追踪靠Sleuth/Zipkin拼凑,现在MCP metadata里直接带traceparent header;以前缓存策略要自己写,现在工具结果可以像HTTP一样声明Cache-Control: max-age=60。

这些变化落到生产环境,意味着Java团队把"AI微服务"部署到K8s里时,扩缩容、HPA、链路追踪、缓存这些基础设施能力终于在AI场景里齐了。剩下唯一非基础设施的事就是写业务工具——这是Java工程师最擅长的事。

MCP 2026-07-28规范的另一个容易被忽略的细节是W3C Trace Context标准化。这对Java团队尤其重要,因为Spring Cloud Sleuth、Micrometer Tracing、OpenTelemetry这一整套链路追踪基建,在Spring生态里已经打磨了十年。MCP metadata层带traceparent header,意味着Java AI服务的调用链可以直接接入企业现有的Observability栈,不需要再为AI单独搭一套Zipkin或Tempo。这件事单独看很小,但是"AI和传统业务可观测性统一"在企业治理层面是非常硬的诉求。

飞书知识库里另一篇《Activiti:开源业务流程管理的革命性引擎》讲的是BPMN 2.0、流程变量、网关、排他/并行子流程。Agent Loop本质上就是工作流。ReAct的"思考→行动→观察→再思考"循环,Multi-Agent的Supervisor分发、并行竞速、条件路由——就是BPMN里的Service Task、Exclusive Gateway、Parallel Gateway。Spring AI 2.0的Graph框架是Activiti思想在AI时代的一次复刻。Java团队如果对Activiti/flowable/Camunda熟,那对Multi-Agent编排会有天然的肌肉记忆,不需要再去学LangGraph那一套Python专用抽象

行动建议:先合并一个低风险场景,再决定是否拆Python栈

如果你的团队也有那个架构师的烦恼——一边Spring Boot一边Python AI——我的建议是三步走。

第一步,挑一个低风险场景做合并试点。比如内部知识库问答、SQL生成、合同摘要这种"调用LLM+查一个内部系统"的简单场景。用Spring AI 2.0 + 虚拟线程写一个MVP,让它和Python版并行跑两周,对比P99延迟、token成本、运维工单数、on-call负担。数字会替你说话。

第二步,如果数据支持迁移,把MCP Server化你最重要的三到五个业务工具,让其他AI Agent(包括非Java栈的)也能调用——这一步的ROI最高,因为你的业务方法被模型发现和调用的概率会显著上升。Anthropic、Microsoft、Okta、Asana、Atlassian、Figma、Slack这些公司已经在用Enterprise-Managed Authorization扩展做企业级MCP认证,Java企业级生态接入是早晚的事。

第三步,把虚拟线程+Spring AI 2.0的组合推广到所有高并发LLM调用场景,关掉Python AI服务的独立集群。省下的不只是机器,更是两套语言栈带来的认知成本——面试、培训、轮值、故障复盘,每一项都是隐性支出。

有一点要诚实说出来:合并Java栈不意味着把Python完全踢出公司。模型训练、数据科学、离线特征工程这些"靠近算法本身"的工作,Python仍然是最合适的工具。MCP的设计哲学就是让每种语言做自己最擅长的事——Java做企业级服务运行时,Python做模型和数据实验,Agent通过MCP在两者之间无缝切换。我们说的"拆Python AI微服务"特指那部分"调用LLM+查询业务系统"的胶水代码,这部分Java已经能做得更好。把工程师从胶水里解放出来,去做真正有差异化的算法工作——这才是合并栈的真正收益。

虚拟线程杀死了"Java养Python AI"在性能维度的最后一个理由。Spring AI 2.0把开发体验拉到了Python同一档。MCP 7月28日给Java AI服务补上了生产基础设施。剩下的,就是动手。Java工程师不需要转Python,他们只需要把自己过去十年积累的"事务思维"和"工作流思维"在AI时代复用一次而已。从今天开始,少养一套语言栈,把省下的精力还给真正有价值的事情。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-08-21 13:36:39 HTTP/2.0 GET : https://f.mffb.com.cn/a/506769.html
  2. 运行时间 : 0.376502s [ 吞吐率:2.66req/s ] 内存消耗:4,766.27kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=9b3e31bf15ac192d12da8162d827ba4c
  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.000936s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001599s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.007374s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.012964s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001403s ]
  6. SELECT * FROM `set` [ RunTime:0.014410s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001838s ]
  8. SELECT * FROM `article` WHERE `id` = 506769 LIMIT 1 [ RunTime:0.075809s ]
  9. UPDATE `article` SET `lasttime` = 1787290599 WHERE `id` = 506769 [ RunTime:0.041118s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.001197s ]
  11. SELECT * FROM `article` WHERE `id` < 506769 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.007895s ]
  12. SELECT * FROM `article` WHERE `id` > 506769 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.004112s ]
  13. SELECT * FROM `article` WHERE `id` < 506769 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.013963s ]
  14. SELECT * FROM `article` WHERE `id` < 506769 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.014104s ]
  15. SELECT * FROM `article` WHERE `id` < 506769 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.003534s ]
0.378233s