乐于分享
好东西不私藏

软件迁移怎么做?常见系统迁移类型与成功迁移方法

软件迁移怎么做?常见系统迁移类型与成功迁移方法

软件迁移是软件工程中最容易被忽视的话题之一,尤其是在高速发展的初创公司和大型企业中。

随着业务增长,公司往往需要采用新的系统和方法,以承载更高的负载、支持更多使用场景,或满足更多约束条件。于是,工程师有时就必须把旧系统或旧方法迁移到新系统或新方法上。这类系统迁移可能涉及服务替换、代码迁移、数据迁移、基础设施迁移等多种类型。

也正是在这个时候,事情开始变得有趣、出乎意料,甚至可能变得非常糟糕。

1. 四个不同的软件迁移案例

每一次迁移,本质上都是一个独立的故事。下面这四个软件迁移案例彼此差异很大,也分别代表了几种典型的迁移结果。

有计划停机的迁移

2012 年,某海外支付公司宣布,将在三小时的维护窗口内暂停全球支付处理系统一小时,以便迁移到新的基础设施。该公司认为,先关闭系统,将数据迁移到新基础设施,再重新启动,是当时最稳妥的方案。

尽管计划迁移时间安排在美国夜间,但由于该公司服务全球客户,迁移期间仍有部分交易无法处理,因此不可避免地造成了一定损失。不过,迁移最终按计划完成,业务中断和损失也都在该公司的预期范围之内。

一次彻底失败的系统迁移

某海外银行拥有约 500 万客户。2018 年,该银行进行了一次 IT 系统迁移,结果导致近 200 万客户无法登录账户,也无法正常取款。

这次迁移带来的问题花了数月才逐步修复。迁移事故发生五个月后,仍有部分客户无法登录账户。该银行首席执行官也因此被迫辞职,结束了长达七年的任期。

尽管事故的根本原因并未完全公开,但从事后报道来看,这场灾难似乎与迁移前测试不充分密切相关。媒体提到,配置问题、基础设施容量不足和代码缺陷,都是导致此次故障的可能原因。

这次系统故障至少给该银行造成了数亿美元损失,更不用说严重的声誉损害和业务冲击。

零停机迁移

2016 年,我加入某海外出行平台时,公司内部有两个支付系统:一个负责处理乘客相关付款,另一个负责处理合作伙伴相关付款。随后,我们开始构建一个全新的统一支付系统,用来替代这两个彼此独立的旧系统。

2017 年,我们将支付业务切换到了这个新的统一支付系统。

从外部看,这次切换几乎没有任何感知:迁移过程中没有停机,也没有出现重大问题。这是一次成功的零停机迁移。

然而,这次迁移的长尾持续了数年,而这条长尾后来也带来了一些问题。

迁移长尾导致的服务中断

尽管新的支付系统已经成为主系统,但该海外出行平台内部仍有数十个系统依赖旧支付基础设施。为了支持那些尚未迁移的系统,新系统需要将数据回写到旧系统中。

长期迁移往往伴随着风险,这一次也不例外。

2018 年,部分司机连续几天无法使用即时提现功能。原因是数据回写系统发生故障,而这个系统负责将生产数据推送到旧系统。由于处理司机付款的系统仍然依赖旧系统,回写数据无法到达,最终导致付款功能出现问题。

工程团队没能第一时间发现故障。原因在于,虽然生产支付系统拥有完善的监控能力,但回写系统原本只计划运行数月,却最终运行了数年,而它并没有配备足够完善的监控和告警机制。

迁移长尾非常常见,风险也很高,并且常常会引发服务中断。这个案例就是典型例子。

2. 常见的软件迁移类型

“迁移”这个词覆盖的范围很广。下面是工程师最常遇到的几类软件迁移类型。

服务替换迁移

服务替换,是指用新服务替换旧服务,并最终将所有客户、流量或业务逻辑迁移到新服务上。例如,上文提到的海外出行平台,就是用新的统一支付系统替换旧的传统支付系统。

这种迁移在任何快速发展的公司中都非常常见。团队之所以选择编写一个新服务,而不是继续改进旧服务,原因可能有很多,例如:

旧系统已经无法满足新的业务需求;

系统需要支持更高负载、更低延迟或更大数据规模;

旧服务所使用的语言、框架或技术栈,在组织内部已经不再被推荐或支持。

服务替换的难点在于,新服务通常并不是旧服务的简单复制。它往往伴随着新的架构、新的数据模型、新的接口,以及新的运行方式。因此,服务替换看似是“换一个系统”,实际上往往涉及业务逻辑、数据一致性、系统集成和运维能力的全面迁移。

服务集成迁移

服务集成,是指集成一项新的服务或新的调用方式。

例如:

  • 接入一个新的 API,比如接入新的支付处理服务;
  • 从外部服务的旧版本 API 迁移到新版本 API;
  • 从轮询事件的方式,迁移到事件推送方式;
  • 从同步消费事件,迁移到异步消费事件,并通过回调函数处理结果。

从这些例子可以看出,服务集成迁移包含很多不同情况。有些工程师甚至不会把其中某些工作视为“迁移”,而只是把它们看作普通功能变更。但我认为,这类变更也应该被视为迁移。

原因在于,这些变更都涉及外部服务行为的变化,而你的代码也必须随之调整,以保证未来行为仍然正确。正是这种外部依赖和行为变化,使这类改动具有风险。因此,更明智的做法是把它们当作迁移来处理,并遵循相应的迁移原则。

服务拆分迁移

服务拆分,是指将系统内部依赖拆分出来,转变为系统外部依赖。这是高增长型初创公司中非常常见的一类迁移,通常用于将大型服务拆分成多个更小、更独立的服务。

从表面看,服务拆分似乎是最简单的迁移之一。毕竟,我们只是把已经能正常运行的代码搬到一个新服务里,对吗?

错。

服务拆分的风险远不止“移动代码”这么简单。它不仅引入了网络通信问题,还会影响新服务的正确性。尤其是在现实情况中,代码很少能够被原封不动地复制粘贴过去。此外,服务拆分还会带来未来运维层面的风险,例如监控、告警、扩缩容、发布流程和故障排查方式都可能发生变化。

虽然服务拆分是相对容易“看起来完成”的迁移类型之一,甚至有时不做完善监控和告警也能上线,但我建议不要被这种表面简单性诱惑。更稳妥的方式,是遵循一套完整的迁移运行手册。

代码迁移

代码迁移,是指将代码库的一部分迁移到不同的框架、库或编程语言上。

这类迁移面临的最大挑战包括:

第一,变更规模大。它通常需要修改大量文件和代码行。

第二,回滚困难。由于变更范围很大,因此很难轻松回滚,有时甚至几乎不可能回滚。这与大多数代码变更截然不同,因为普通代码变更多数范围较小,可以比较容易地撤销。

第三,生产环境测试更困难。由于改动范围很广,很难在真实生产流量下全面验证所有行为。

常见的代码迁移示例包括:

迁移到新的编程语言。例如,某海外支付基础设施公司曾在一个周末内,将数百万行使用某类型检查工具的 JavaScript 代码迁移到了 TypeScript;

升级到某个库的主版本,而新版本引入了破坏性 API 变更;

改变整个代码库的编码模式。例如,将 JavaScript 代码库从使用回调函数,更新为使用 Promise。

代码迁移通常容易被低估。它看起来只是“改代码”,但由于变更面广、影响范围大、回滚困难,因此需要非常谨慎的计划和验证。

数据迁移

数据迁移,是指将一个或多个数据库迁移到新的数据模式或新的数据库引擎上。

数据迁移是风险最高的迁移类型之一,主要原因有以下几点。

第一,回滚困难。代码变更可以通过回滚代码来撤销,但数据变更并不总是如此。一旦数据被转换、覆盖或写入新结构,恢复旧状态可能非常复杂。

第二,数据迁移很难以原子方式完成。理想情况下,数据迁移应该像一次原子操作:从某一刻开始,旧数据库或旧模式停止使用,所有数据都已经迁移到新数据库或新模式。但在现实中,数据迁移通常需要时间。也正因为如此,停机迁移在数据迁移场景中往往更容易实施。

第三,数据迁移通常与代码变更紧密相关。为了确保迁移按预期进行,团队往往需要在迁移数据的同时调整代码逻辑。

第四,需要考虑更多边界情况。例如,生产者是否仍会写入旧数据库?消费者是否能够理解新模式?旧数据和新数据是否会同时存在?这些特殊情况都必须提前考虑。

数据迁移的复杂性,往往不是来自“把数据搬过去”本身,而是来自迁移过程中新旧系统并存、读写路径变化和数据一致性保障。

基础设施迁移

基础设施迁移,是指将存储、计算或网络基础设施迁移到新的供应商、新的位置或新的架构上。

基础设施迁移风险极高,因为它会影响所有依赖该基础设施的服务。一旦基础设施迁移出现问题,可能导致所有相关服务同时受影响。因此,基础设施迁移通常比数据迁移还需要更充分的准备。

与其他迁移类型相比,代码迁移和数据迁移通常属于虚拟层面的迁移,而基础设施迁移可能涉及物理基础设施的移动或变更,也可能需要现场操作。

虽然如今大多数公司都会使用主流云服务商,但仍有不少公司运营自己的数据中心或服务器。基础设施迁移可能意味着对这些数据中心、服务器、网络或存储设施进行调整。

此外,服务和工具升级也可能导致服务中断。例如,升级 CI/CD 系统、升级研发协作工具,或进行其他工具基础设施变更,都可能引发中断风险。

对于这类升级,迁移工作通常由工具供应商承担。但工程团队仍然应该了解迁移过程的底层机制,判断是否存在高风险升级,并采用类似本文讨论的方法来降低风险。

3. 为什么系统迁移值得被认真对待

迁移之所以容易被低估,是因为它常常不像新功能那样令人兴奋。它不会直接带来新的用户界面,也不一定能立即提升核心业务指标。很多时候,它只是为了让系统能够继续支撑业务增长,或者避免未来发生更严重的问题。

但迁移失败的代价往往极高。它可能造成服务中断、客户无法使用产品、数据不一致、收入损失,甚至引发严重的声誉危机。

成功的迁移通常看起来“什么都没发生”。用户没有感知,业务没有中断,系统平稳切换,一切照常运行。也正因为如此,优秀的迁移往往不容易被看见。

但这并不意味着迁移不重要。恰恰相反,软件迁移是复杂软件系统能够持续演进的关键能力。

4. 如何做好软件迁移

本文是关于“如何做好迁移”的系列文章第一部分,重点介绍了迁移的典型案例和常见类型。

后续内容通常还需要继续讨论以下问题:

迁移前应该如何准备;

迁移期间应该如何执行;

迁移完成后应该如何验证;

如何处理迁移长尾;

如何向业务方解释迁移价值;

如何处理迁移过程中的组织和人员问题。

迁移并不是一次简单的技术操作,而是一项需要工程能力、产品判断、风险管理和组织协作共同参与的系统性工作。

在实际落地中,团队可以借助 PingCode 这类智能化研发管理工具,将团队目标、需求评审、开发任务、测试验证、发布上线和 Wiki 知识沉淀串联起来,并打通研发过程中使用的其他工具,让迁移过程中的计划、风险、进度、验证结果和经验复盘能够被持续记录和追踪。

对于工程团队来说,真正重要的不是“是否要迁移”,而是如何以可控、可验证、可回滚、可沟通的方式完成迁移。优秀的软件迁移,往往不是靠一次大胆切换完成的,而是靠充分准备、渐进执行、持续监控和清晰沟通一步步完成的。

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-06-06 08:27:07 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/716586.html
  2. 运行时间 : 0.201419s [ 吞吐率:4.96req/s ] 内存消耗:4,795.61kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=6c1720072e6076b5802b3b4c55f17223
  1. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_static.php ( 6.05 KB )
  7. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/ralouphie/getallheaders/src/getallheaders.php ( 1.60 KB )
  10. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  11. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  12. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  13. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  14. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  15. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  16. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  17. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  18. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  19. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions_include.php ( 0.16 KB )
  21. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions.php ( 5.54 KB )
  22. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  23. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  24. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  25. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/provider.php ( 0.19 KB )
  26. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  27. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  28. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  29. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/common.php ( 0.03 KB )
  30. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  32. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/alipay.php ( 3.59 KB )
  33. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  34. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/app.php ( 0.95 KB )
  35. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cache.php ( 0.78 KB )
  36. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/console.php ( 0.23 KB )
  37. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cookie.php ( 0.56 KB )
  38. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/database.php ( 2.48 KB )
  39. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/filesystem.php ( 0.61 KB )
  40. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/lang.php ( 0.91 KB )
  41. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/log.php ( 1.35 KB )
  42. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/middleware.php ( 0.19 KB )
  43. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/route.php ( 1.89 KB )
  44. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/session.php ( 0.57 KB )
  45. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/trace.php ( 0.34 KB )
  46. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/view.php ( 0.82 KB )
  47. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/event.php ( 0.25 KB )
  48. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  49. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/service.php ( 0.13 KB )
  50. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/AppService.php ( 0.26 KB )
  51. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  52. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  53. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  54. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  55. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  56. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/services.php ( 0.14 KB )
  57. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  58. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  59. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  60. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  61. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  62. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  63. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  64. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  65. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  66. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  67. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  68. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  69. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  70. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  71. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  72. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  73. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  74. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  75. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  76. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  77. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  78. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  79. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  80. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  81. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  82. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  83. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  84. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  85. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  86. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  87. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/Request.php ( 0.09 KB )
  88. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  89. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/middleware.php ( 0.25 KB )
  90. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  91. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  92. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  93. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  94. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  95. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  96. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  97. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  98. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  99. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  100. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  101. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  102. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  103. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/route/app.php ( 3.94 KB )
  104. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  105. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  106. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Index.php ( 9.87 KB )
  108. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/BaseController.php ( 2.05 KB )
  109. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  110. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  111. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  112. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  113. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  114. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  115. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  116. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  117. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  118. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  119. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  120. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  121. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  122. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  123. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  124. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  125. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  126. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  127. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  128. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  129. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  130. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  131. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  132. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  133. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  134. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  135. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Es.php ( 3.30 KB )
  136. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  137. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  138. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  139. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  140. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  141. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  142. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  143. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  144. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/runtime/temp/c935550e3e8a3a4c27dd94e439343fdf.php ( 31.50 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000597s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000967s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.001467s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.001191s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000688s ]
  6. SELECT * FROM `set` [ RunTime:0.001315s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000763s ]
  8. SELECT * FROM `article` WHERE `id` = 716586 LIMIT 1 [ RunTime:0.001660s ]
  9. UPDATE `article` SET `lasttime` = 1780705627 WHERE `id` = 716586 [ RunTime:0.003400s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000323s ]
  11. SELECT * FROM `article` WHERE `id` < 716586 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000592s ]
  12. SELECT * FROM `article` WHERE `id` > 716586 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000480s ]
  13. SELECT * FROM `article` WHERE `id` < 716586 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.000792s ]
  14. SELECT * FROM `article` WHERE `id` < 716586 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001069s ]
  15. SELECT * FROM `article` WHERE `id` < 716586 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.005221s ]
0.203118s