当前位置:首页>python>04|根据职位分布数据,用 Python 找出德国软件测试职位必学技能

04|根据职位分布数据,用 Python 找出德国软件测试职位必学技能

  • 2026-08-20 01:22:39
04|根据职位分布数据,用 Python 找出德国软件测试职位必学技能

 从 Full JD 补全、技能提取到德国软件测试Skill Map。”

本系列前三篇文章分别解决了三个问题:怎样把一个现实问题拆成数据项目,怎样通过 Jobs API 批量获取真实职位,以及怎样把本地项目整理并上传到 GitHub

第一篇最终从 2,671 个去重职位中筛出了 568 个与软件测试相关的岗位。但这些岗位究竟需要什么技能?

今天我们继续扩展这个 Python 项目:从 568 个相关职位出发,寻找原始招聘页面,补全 Full JD,再用 BeautifulSoup,JSON-LD 和正则表达式提取技能。

过程中遇到的数据问题:为什么 HTTP 的需求率一度高达 6.62%?为什么抓到整个网页反而可能让数据变差?为什么 272 份可用 JD,最终只用其中 201 份作为核心分析样本?

最终我们得到不是一个简单的热门技能排行榜,而是一张可以真正用于制定学习计划的德国软件测试 Skill Map

1. Adzuna获取的职位描述不全

上一篇数据分析中,我们已经完成了一轮比较完整的职位采集和分类。整个流程大致是:

Adzuna API → 2,671 个去重职位 → 职位分类 → 568  Relevant Jobs

 568 个职位已经经过分类器和人工抽查,相比招聘网站直接返回的搜索结果干净很多。看起来,数据似乎已经足够了。

如果想知道德国软件测试岗位最需要哪些技能,直接在这 568 条数据里搜索 PythonSeleniumISTQB 不就可以了吗?

但是Adzuna API 返回的数据虽然包含 description 字段,但它只是职位描述片段,而不是完整 JD

一个技能没有出现在 snippet 中,不代表招聘方没有要求它。所以项目需要进入第二阶段:补全 Full Job Description

2. 补全职位描述(JD)

到这里我有一个疑问:“为什么不一开始就在抓取有完整 JD 的网站的信息?” 既然最后还是需要完整 JD,为什么前面还要通过 Jobs API 获取几千个职位,再分类、清洗,然后重新寻找招聘页面?

如果一开始就从各种招聘网站直接抓Full JD,会马上面对不同网站、不同公司官网的页面结构差异,而且大量职位后来会被判断为 UNCERTAIN 或IRRELEVANT,从而导致产生大量无效数据。

所以我们分两个阶段解决问题:第一阶段解决的是哪些职位值得分析?,第二阶段解决的是这些职位具体要求什么?

API 很适合第一件事。它可以通过统一的数据结构批量返回职位 ID、标题、公司、地点、坐标和描述片段。我们可以先快速建立一个相对完整的职位池,再通过规则和人工验证筛出真正属于软件测试的岗位。

最后采用一种分层策略:API → 建立结构化职位池 → 分类与清洗 → Relevant Jobs → 只对 Relevant Jobs  Full JD

先用成本较低的方法缩小范围,再把成本更高的方法用在真正需要分析的数据上。

3. 找到原始职位

接下来要做的,是根据职位标题和公司名称寻找 Original Job Page。程序会为每个职位生成搜索词,再通过搜索服务寻找可能的原始招聘页面。

如果第一次搜索没有得到可信结果,还可以使用 fallback search:调整搜索词或放宽条件,再尝试一次。

这一阶段可以概括为:Relevant Job → Search Query → Candidate URL → URL 验证 → 抓取网页 → 提取 Full JD

这也解释了我当时提的另一个问题:前面几百条数据的搜索到底是在干什么?” 它不是重新搜索有没有这些职位。前面的 API 已经完成了职位发现。这里搜索的真正目标,是给已经确定要分析的职位找到信息更完整的原始页面。

这是典型的 Data Enrichment:不是重新建立数据集,而是在已有数据上补充新的字段。

4. BeautifulSoup 

抓到网页以后,需要用到新工具:BeautifulSoup

我们可以把网页理解成一棵由 HTML 标签组成的结构。requests 的工作是把 HTML 从服务器拿回来;BeautifulSoup 的工作,则是解析这份 HTML,让 Python 能够理解和查找里面的结构。

例如可以使用 BeautifulSoup(html, 'html.parser') 创建解析对象,再通过get_text() 提取页面中的可见文字。

所以两者的关系很简单:requests 负责拿网页,BeautifulSoup 负责解析网页,Python再对内容进行分析。

但很快我们就发现:能把网页文字全部拿出来,并不等于已经拿到了干净的 JD

5. JSON-LD 

很多招聘页面除了给人看的 HTML,还会提供一份给搜索引擎和程序读取的结构化数据,其中一种常见格式就是 JSON-LD

在招聘页面中,它可能包含 @type: JobPosting,以及 titledescriptionhiringOrganization 等字段。

那验证的时候,把 JSON-LD  Description 合并,再search 吗?并不是。

实际search job的流程如下图:

6. Data Cleaning

问: 我们这个过程哪里涉及到了 Data Cleaning

第一阶段已经发生过多关键词职位合并、Job ID 去重、职位分类和 False Positive 排除。进入 Full JD阶段后,又增加了搜索结果筛选、URL 验证、页面验证、Full JD 提取、HTML 噪声处理和技能误判清理。

所以 Data Cleaning 并不等于执行一次 df.drop_duplicates(),也不是一个做完就结束的步骤。

更准确地说:只要原始数据与真正想分析的对象之间还有差距,就仍然存在 Data Cleaning

7. 第一次结果

拿到 Full JD 后,就可以开始做 Skill Extraction。先建立技能词表,例如 PythonJavaSeleniumPlaywrightCypressCI/CDISTQBLinuxDocker 等,再用 Regex  JD 中寻找这些技能。

第一版很快就跑出了结果。但检查结果时,一个数字显得有些奇怪:HTTP 出现在 18 个岗位中,占 6.62%

HTTP 当然是测试工程师可能接触的知识。问题是,它真的被这么多招聘信息明确列为技能要求吗?

于是我们没有直接相信统计表,而是回到原始 Evidence。结果发现,一些命中来自 https://company.com/jobs/... 这样的 URL

Regex 看到了 http,于是判断这个岗位要求 HTTP。但这里的 HTTP 根本不是技能,它只是URL 的一部分。

程序没有报错,CSV 正常生成,统计代码也完全运行成功,但结果是错的。

这也是这个项目里非常重要的一次提醒:代码成功运行,不等于数据分析结果正确。

8.升版

程序执行的角度看,第一版已经完成了;但从数据分析的角度看,它并没有完成。

第二版做了几件事情:清除 URL、收紧 Regex、增加 Negative Context,并保存 Evidence Snippet,然后重新提取。

Evidence Snippet 特别重要。以前程序只告诉我HTTP=True,现在还会告诉我为什么它认为 HTTP=True。这样人工抽查时,就可以直接查看关键词附近的文本。

修正后,HTTP  18 个岗位 / 6.62%,下降到了 1 个岗位 / 0.37%

这说明问题并不是市场突然发生了变化。变化的是:我们的测量方法变准确了。

9. 网页污染数据

HTTP 问题解决后,很快又发现了第二个问题。Visible HTML 中可能出现查看更多相关职位之类的内容。

这意味着一个招聘网页并不只有当前职位。它可能同时包含当前职位 JD、相关推荐职位、导航栏、Footer 和公司其他岗位。

假设当前职位没有要求 Java,但页面底部推荐了 Senior Java Test Automation Engineer。如果直接对整页文字搜索 Java,程序可能会判断当前职位要求 Java

于是产生另一类 False Positive

这时候出现了一个有点反直觉的结论:抓到的文字更多,不一定意味着数据更完整。有时候,它只是意味着噪声更多。

10.排除污染数据

比较两种 Full JD Extraction Method。最终得到 272  usable Full JD,其中 201 份来自 JSON-LD JobPosting71 份来自 Visible HTML

接下来没有直接把 272 份全部混在一起,而是比较两组数据中的技能频率。结果发现,一些技能在两种 Extraction Method 中存在明显差异。

这意味着:数据提取方式本身可能正在影响分析结果。

因此最终采用 201  JSON-LD 作为 Primary Dataset71  Visible HTML 作为 Robustness Dataset

如果增加的数据同时带来了更大的 Measurement Error,那么 200 条来源更清晰的数据,可能比 300 条混有推荐职位、导航和页面噪声的数据更适合作为核心样本。

数据不一定需要百分之百完整,关键是清楚知道哪些数据可靠,以及结论能支持到什么程度。

最终,我们以 201  JSON-LD Full JD 作为核心样本。得到的部分技能频率如下:

技能

岗位数

占比

Test Automation

123

61.19%

Agile

93

46.27%

ISTQB

66

32.84%

Python

56

27.86%

CI/CD

54

26.87%

Selenium

47

23.38%

Jira

38

18.91%

Playwright

35

17.41%

Scrum

34

16.92%

C++

32

15.92%

Java

31

15.42%

11. 一起出现的技能

到这里,好像已经可以制定学习计划了。但出现频率不等于学习顺序。ISTQBPythonCI/CD  Selenium 的学习成本不同,在招聘中的作用也完全不同。另外:技能不是孤立出现的。

于是下一步不再只统计“Python 出现了多少次,而是问:“Python 通常和什么一起出现?这就是 Skill Co-occurrence

例如数据中有一个非常明显的关系:94.44% 出现 CI/CD 的岗位,同时出现 Test Automation

类似地,Java  SeleniumPython  AutomationSelenium  Playwright 之间,也存在不同程度的共现关系。

这时候我们分析的就不再是一张关键词排行榜,而是德国企业正在招聘什么样的技能组合。

再加入 Role Segmentation——区分 General Software TestingTest AutomationEmbedded / Automotive 等岗位——最终才能得到真正的 Skill Map

Skill Frequency + Skill Co-occurrence + Role Segmentation → German Software Testing Skill Map

12.市场需求与学习计划

到这里,我以为问题已经解决了。既然市场数据已经告诉我们德国公司需要什么,那么让 AI 根据 Skill Map 排一份学习路线就可以了。

第一版Skill Map:Testing Fundamentals → ISTQB Foundation → Python → Selenium → API Testing → CI/CD……

接下来排除个人已有的测试经验和技能, 删掉 Testing Fundamentals  ISTQB , 从而得到个人 Learning Map 。

最终逻辑变成:Market Demand − Existing Skills + Skill Dependencies → Personal Learning Plan

同一份德国招聘数据,最后对工作经验不同的人会生成不同的学习路线。

13. 从数据到决策

这个项目最初的问题:如果准备找德国的软件测试工作,我应该学什么?

这个问题完全可以直接问 AI。几秒钟后就能得到 PythonJavaSeleniumPlaywrightAPI TestingCI/CDDocker 等答案。这些答案未必错。

但真正的问题是:为什么是这些?它们在目标市场中到底有多重要?哪些是独立技能,哪些其实属于同一套技术栈?哪些属于通用 QA,哪些主要集中在 Embedded / Automotive?更重要的是——其中哪些我已经会了?

于是一个原本很模糊的问题,最后变成了一条完整的数据链:职位采集 → 职位分类 → Full JD Enrichment → HTML / JSON-LD Extraction → Data Cleaning → Skill Extraction → False Positive Audit → Robustness Check → Skill Frequency → Skill Co-occurrence → Role Segmentation → Skill Map → Personal Skill Gap → Learning Plan

这个过程中,Python 的价值并不只是帮我自动处理了很多数据。更重要的是,它让我可以把我感觉应该学这些,逐渐变成根据我定义的样本和分析方法,数据支持我优先关注这些技能

当然,这仍然不是一份对整个德国劳动力市场的完整普查。职位数据来自特定数据源,因此结果应该理解为基于该数据源和分析口径得到的样本,而不是整个市场的绝对真相。

但对实际决策来说,它已经比一张来源不明的软件测试学习路线图多了一层很重要的东西:证据。

工具不是从问题中消除不确定性,而是帮助我们把不确定性看得更清楚。

(完)

Quiet people have the loudest minds. 

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-08-21 16:26:47 HTTP/2.0 GET : https://f.mffb.com.cn/a/511360.html
  2. 运行时间 : 0.253792s [ 吞吐率:3.94req/s ] 内存消耗:4,593.45kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=bf1b6ea38d4402357579dd48bc8d3b68
  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.000993s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.002079s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.022237s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000669s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001522s ]
  6. SELECT * FROM `set` [ RunTime:0.000515s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001723s ]
  8. SELECT * FROM `article` WHERE `id` = 511360 LIMIT 1 [ RunTime:0.012830s ]
  9. UPDATE `article` SET `lasttime` = 1787300807 WHERE `id` = 511360 [ RunTime:0.016546s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000661s ]
  11. SELECT * FROM `article` WHERE `id` < 511360 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001087s ]
  12. SELECT * FROM `article` WHERE `id` > 511360 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001157s ]
  13. SELECT * FROM `article` WHERE `id` < 511360 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001706s ]
  14. SELECT * FROM `article` WHERE `id` < 511360 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.018074s ]
  15. SELECT * FROM `article` WHERE `id` < 511360 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.010847s ]
0.257559s