当前位置:首页>python>还在折腾 Python 爬虫?用 Go 语言最强爬虫框架 Colly,并发与性能直接拉满!

还在折腾 Python 爬虫?用 Go 语言最强爬虫框架 Colly,并发与性能直接拉满!

  • 2026-06-29 15:32:20
还在折腾 Python 爬虫?用 Go 语言最强爬虫框架 Colly,并发与性能直接拉满!

还在折腾 Python 爬虫?用 Go 语言最强爬虫框架 Colly,并发与性能直接拉满!

在当今这个数据即资产的时代,高效的数据采集系统是许多企业和开发者不可或缺的底层基础设施。在提到数据爬虫时,大多数人脑海中浮现的第一个画面往往是 Python 的 ScrapyBeautifulSoup 或者是 Selenium。不可否认,Python 凭借其极低的上手门槛和繁荣的科学生态,确实统治了数据爬虫领域多年。然而,当我们的爬取规模从“几百个页面”上升到“数百万乃至数千万级别”时,Python 传统爬虫工具的底层局限性就会暴露无遗。

本文将带你深度对比 Python 与 Go 语言在爬虫领域的性能表现,并为你全方位剖析 Go 语言生态中最受欢迎的高性能轻量级爬虫框架 —— Colly。我们将从底层原理、架构设计、核心机制,再到生产级实战避坑指南,手把手带你构建一套每秒能够处理数千次请求的极速数据采集系统!


一、 为什么放弃 Python?高并发数据采集的“性能天花板”

传统 Python 爬虫(如 Scrapy、BeautifulSoup)在处理超大规模数据爬取时,常常让开发者痛苦不堪。这并非是因为库本身写得不够好,而是受限于 Python 语言本身的底层机制:

1. 全局解释器锁(GIL)的铁幕: Python 的多线程并非真正的并发。在多核 CPU 时代,GIL 强行限制了任何时刻只能有一个线程在执行 Python 字节码。这意味着你无法简单地通过多线程榨干多核服务器的性能。虽然可以通过多进程(Multiprocessing)或异步 IO(如 Asyncio/Twisted)来规避,但多进程的内存开销极其庞大,而异步 IO 的心智负担又非常高,且极易因为某个 CPU 密集型的解析任务(如复杂的 BeautifulSoup 选择器匹配)而导致整个事件循环发生阻塞。

2. 全局垃圾回收(GC)延迟毛刺: 当 Python 在内存中维护数百万个待爬取 URL 队列、Cookie 和解析出的 DOM 树对象时,垃圾回收机制(分代回收与引用计数)在释放大量小对象时,会频繁触发全局的 “Stop-the-World” 停顿。这种 GC 带来的延迟毛刺,会导致爬虫的并发吞吐量出现无规律的大幅下跌。

3. 部署环境极其臃肿: 依赖众多的 Python 环境(如 virtualenv、大量 C 语言编写的二进制依赖包如 lxml 等),在服务器部署时极其繁琐。经常因为底层动态链接库版本不一致而导致崩溃。一个基础的 Python 爬虫 Docker 镜像动辄 500MB 到 1GB,部署效率极低。

相比之下,Go 语言天生就是为了高并发而设计的。Go 语言最强爬虫框架 Colly 基于极其轻量级的 Goroutine 协程机制,其底层优势堪称降维打击:

  • 极低的资源消耗:
     一个普通的 Goroutine 初始仅需 2KB 到 8KB 的内存空间,而 Python 线程通常需要 8MB 的系统栈空间。这意味着在一台普通的服务器上,你可以同时并发数十万个 Goroutine,而内存占用几乎可以忽略不计。
  • 真正的多核并行:
     Go 运行时调度器(G-M-P 模型)能够完美将成千上万个 Goroutine 自动分发到 CPU 的物理多核上并行执行,轻松实现每秒上千页面的物理吞吐极限。
  • 零依赖单二进制部署:
     Go 编译后会生成一个静态链接的单一二进制可执行文件。没有任何外部依赖环境,直接扔到服务器甚至最小的 Alpine Docker 镜像(仅需十几MB)中就能完美跑起来,运维部署省心到了极致。

二、 深度剖析:Colly 核心架构与底层运行机制

Colly (gocolly/colly) 是目前 Go 语言生态中Star量最高(已突破 25k+)的开源爬虫框架。它不仅拥有极佳的性能,更提供了一套非常优雅、类似 jQuery 的链式 API 设计。

为了更好地理解 Colly 是如何做到超强并发和轻量化调度的,我们可以通过下面的架构图来一窥其底层原理解析:

从上图可以看出,Colly 的核心组件是由 Collector(收集器) 驱动的。它的底层运转链路非常清晰:

1. Goroutine 并发调度: 当用户调用 c.Visit() 时,Colly 会在内部根据配置的并发机制,启动高度优化的 Goroutine 线程池去并发发起 HTTP/HTTPS 请求。

2. OnHTML 解析器回调: 当请求响应返回后,Colly 会自动调用内置的超快速 HTML 解析器(基于 Go 官方的 net/html 和 cascadia CSS 选择器库)。该解析器完全兼容类似 jQuery 的 Selector 语法。一旦匹配到指定的 CSS 节点,就会立即安全地触发绑定的 OnHTML 回调函数。

3. 限速规则与代理调度器: 为了应对目标服务器的反爬拦截,Colly 内置了强大的 LimitRule 限速队列系统与 Round-Robin 代理轮换器。在发出每一个请求之前,都会严格过一遍“限速规则”(包括最大并发、随机延迟)和“代理池 switcher”,从而在保障极速爬取的同时,实现最温和、合规的流量输出。


三、 快速上手:30 秒写出你的第一个 Go 爬虫

工欲善其事,必先利其器。让我们从零开始,快速构建一个可以抓取 Hacker News 热门标题的极简爬虫。

首先,在你的终端中初始化一个 Go 模块并安装 Colly 包:

# 初始化模块go mod init gocolly-crawler# 安装最新的 Colly v2 依赖包go get -u github.com/gocolly/colly/v2

接着,新建一个 main.go 文件,写入以下完整的高水准 Go 源代码。这段代码展示了如何初始化收集器、注册 HTML 回调并优雅启动抓取:

package mainimport (    "fmt"    "log"    "github.com/gocolly/colly/v2")func main() {    // 1. 初始化核心收集器    c := colly.NewCollector(        // 限制只允许爬取特定的域名,防止爬虫跑飞        colly.AllowedDomains("news.ycombinator.com"),    )    // 2. 注册回调函数:在找到匹配的 HTML 元素时触发    // 我们使用 CSS 选择器定位每一行的标题链接    c.OnHTML(".titleline > a", func(e *colly.HTMLElement) {        title := e.Text        link := e.Attr("href")        fmt.Printf("【发现标题】: %s\n", title)        fmt.Printf("【文章链接】: %s\n\n", link)    })    // 3. 注册请求前置回调(可选,用于做一些前置拦截或头部注入)    c.OnRequest(func(r *colly.Request) {        fmt.Printf("正在准备发起请求: %s\n", r.URL.String())    })    // 4. 注册全局错误捕获回调(重要,避免爬虫因为错误静默退出)    c.OnError(func(r *colly.Response, err error) {        log.Printf("请求失败,URL: %s, 错误原因: %v\n", r.Request.URL, err)    })    // 5. 启动爬虫,传入目标入口 URL    err := c.Visit("https://news.ycombinator.com/")    if err != nil {        log.Fatalf("爬虫启动失败: %v", err)    }}

核心 API 原理解析:

  • colly.NewCollector()
    :创建 Colly 唯一的调度核心 Collector 对象。你可以通过传入各种函数式选项(Options)来定制它的行为(如缓存目录、深度控制、用户代理等)。
  • OnHTML(selector, callback)
    :注册一个选择器回调。当 HTML 文档下载完毕并解析出匹配该 CSS selector 的节点时,传入的匿名函数就会被同步或异步调用。e *colly.HTMLElement 对象中封装了丰富的操作方法,比如通过 e.Text 获取纯文本,通过 e.Attr("name") 获取属性。
  • Visit(url)
    :真正点火启动爬虫的入口。需要注意的是,在注册好所有的回调函数(如 OnHTMLOnError之后才去调用 Visit()

四、 核心进阶:掌控 Colly 的高并发与反反爬“超能力”

如果仅仅是抓取单一的静态页面,那还称不上“神器”。在真实的生产环境中,我们往往需要面对多链接自动追踪、高并发请求控制、以及严苛的反爬虫限制。Colly 针对这些高级场景提供了极其强大的原生支持。

1. 并发控制与限速器(colly.LimitRule)

未经限速的极致并发很可能会把目标网站的服务器直接打挂,进而导致我们的 IP 被永远拉黑。Colly 提供了优雅的限速器规则配置:

package mainimport (    "fmt"    "time"    "github.com/gocolly/colly/v2")func main() {    c := colly.NewCollector(        // 必须显式开启异步高并发支持        colly.Async(true),    )    // 配置限速规则,保护目标服务器并模拟人类行为    err := c.Limit(&colly.LimitRule{        // 匹配哪些域名应用此限速规则,"*" 表示通配全局所有域名        DomainGlob:  "*",        // 最大物理并发度,限制同一时刻最多有 8 个 Goroutine 同时在爬取        Parallelism: 8,        // 每次请求之间的基础睡眠间隔        Delay:       1 * time.Second,        // 随机抖动时间,会在 1s 基础上加上 0~2s 之间的随机延迟,使抓取频率更具人性化特征        RandomDelay: 2 * time.Second,    })    if err != nil {        panic(err)    }    c.OnHTML("a[href]", func(e *colly.HTMLElement) {        // 自动抓取发现的链接        e.Request.Visit(e.Attr("href"))    })    c.Visit("https://example.com")    // 🚨 【核心注意点】:因为开启了异步并发,主协程必须调用 Wait() 等待所有异步队列全部爬取完毕!    c.Wait()}

2. 多链接自动去重与深度追踪

要想顺着网站的链接不断向下深挖,我们可以在 OnHTML 回调中提取出所有的超链接,并继续调用 Visit。Colly 在底层内置了一个非常高效的内存去重器(Visited URL Manager),能够自动过滤掉已经爬取过的链接,绝对不会发生死循环:

c.OnHTML("a[href]", func(e *colly.HTMLElement) {    link := e.Attr("href")    // 自动转化为绝对路径,并继续发起抓取    // Colly 会在底层自动维护一个 Map,确保相同的 URL 只会被爬取一次!    e.Request.Visit(link)})

3. 随机 User-Agent 与代理池轮换(RoundRobinProxySwitcher)

面对严苛的 User-Agent 屏蔽与单 IP 频次限制,我们可以通过引入 Colly 的官方 extensions 库和 proxy 轮换机制轻松化解:

package mainimport (    "github.com/gocolly/colly/v2"    "github.com/gocolly/colly/v2/extensions"    "github.com/gocolly/colly/v2/proxy")func main() {    c := colly.NewCollector()    // 1. 自动注入随机 User-Agent 扩展:    // 它会在每个请求发起前,从内置的桌面与移动端 UA 库中随机挑选一个注入 Request Header    extensions.RandomUserAgent(c)    // 2. 引入代理池轮 switch 机制(轮询切换代理 IP)    // 将你的代理服务器列表填入此处    proxyPool, err := proxy.RoundRobinProxySwitcher(        "http://192.168.1.100:8080",        "http://192.168.1.101:8080",        "http://192.168.1.102:8080",    )    if err == nil {        c.SetProxyFunc(proxyPool)    }    c.Visit("https://httpbin.org/ip")}

五、 实战避坑与高级技巧指南

在真正的企业级应用中,单纯的 OnHTML 往往不够用。以下为你梳理三条来自一线爬虫架构师的实战避坑与性能调优经验:

1. 善用 OnResponse 直接解析高效率接口

很多现代网站的数据并不是渲染在 HTML 里的,而是通过 Ajax 异步请求 JSON API 得到的。如果返回的内容是纯 JSON,直接用 OnResponse 获取原始 Body,再使用 Go 的 encoding/json 或者是更快的 json-iterator 库进行解析,效率会提高数倍:

c.OnResponse(func(r *colly.Response) {    // 判断响应的内容类型是否为 JSON    if r.Headers.Get("Content-Type") == "application/json" {        // 或者是直接抓取目标接口        fmt.Println("成功捕获到 JSON 数据流,大小:", len(r.Body))        // 接下来可以使用 json.Unmarshal 进行反序列化处理    }})

2. 巧用 Request.Ctx 跨请求安全传递上下文

因为 Colly 的运行是高度异步并发的,回调函数中如果需要共享某些状态或传递变量,必须避免使用全局变量以防并发写冲突。Colly 为此提供了专用的 Context 上下文机制:

c.OnHTML(".category-list a", func(e *colly.HTMLElement) {    categoryName := e.Text    link := e.Attr("href")    // 1. 在发起新请求时,创建一个上下文变量并绑定数据    ctx := colly.NewContext()    ctx.Put("category", categoryName)    // 2. 携带该上下文发起深度抓取    e.Request.VisitWithContext(link, ctx)})c.OnHTML(".detail-page", func(e *colly.HTMLElement) {    // 3. 在子页面的回调中,安全地取出父级传入的分类名称    category := e.Request.Ctx.Get("category")    fmt.Printf("当前内容属于大类: %s, 正在解析子页明细...\n", category)})

3. 必须注册全方位的 OnError 回调追踪链

大规模爬取中最忌讳“静默失败” —— 即爬虫默默地跑完了,但是数据库里什么也没有,且控制台没有任何输出。网络闪断、目标服务器 502/403/404、甚至是 SSL 证书验证失败都会导致请求崩掉。

你必须至少注册以下两个错误捕获机制,实时感知整个爬虫的健康状况:

c.OnError(func(r *colly.Response, err error) {    // 获取出错请求的 HTTP 状态码    statusCode := r.StatusCode    url := r.Request.URL.String()    log.Printf("[⚠️ 报警回调] 抓取失败!状态码: %d, 地址: %s, 原因: %v\n", statusCode, url, err)    // 在此处可以对接你的企业微信/钉钉机器人通知,实现无人值守的实时监控})

六、 结语

从 Python 到 Go,不仅是语法的转变,更是对运行效率并发控制生产级架构稳定性的思维跃迁。

Go 语言优秀的静态编译特性、强类型安全性,以及像 Colly 这样简单优雅且性能炸裂的高并发框架,使其成为了当下构建现代化海量数据采集中心的首选利器。告别繁复的库依赖、繁琐的多进程调度和无休止的内存崩盘,不妨今天就动手用 Go 写下你的第一行 Colly 爬虫,体验一下性能拉满带来的爽快感吧!

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-02 23:30:41 HTTP/2.0 GET : https://f.mffb.com.cn/a/501830.html
  2. 运行时间 : 0.159512s [ 吞吐率:6.27req/s ] 内存消耗:4,609.20kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=ab1bc61a73806d229b57079d0209f4ae
  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.000398s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000539s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000291s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000277s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000477s ]
  6. SELECT * FROM `set` [ RunTime:0.000196s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000564s ]
  8. SELECT * FROM `article` WHERE `id` = 501830 LIMIT 1 [ RunTime:0.009111s ]
  9. UPDATE `article` SET `lasttime` = 1783006241 WHERE `id` = 501830 [ RunTime:0.032624s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000415s ]
  11. SELECT * FROM `article` WHERE `id` < 501830 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.004220s ]
  12. SELECT * FROM `article` WHERE `id` > 501830 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000727s ]
  13. SELECT * FROM `article` WHERE `id` < 501830 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.008938s ]
  14. SELECT * FROM `article` WHERE `id` < 501830 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.011744s ]
  15. SELECT * FROM `article` WHERE `id` < 501830 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.019770s ]
0.160937s