乐于分享
好东西不私藏

19.OpenAI 兼容 API 服务化:从协议到 LLM Gateway

19.OpenAI 兼容 API 服务化:从协议到 LLM Gateway

OpenAI 兼容 API 服务化:从协议到 LLM Gateway

《大模型知识与部署》系列 · No.19 / 35
适合人群:AI 工程师、后端开发、技术架构师
阅读时间:约 28 分钟


在这里插入图片描述

写在前面

第18篇:18.本地化部署:Ollama 与 LM Studio 的轻量级方案

前面几篇我们反复提到 OpenAI 兼容 API——vLLM、SGLang、Ollama、TGI、lmdeploy 全都支持它。

为什么这件事这么重要?

举个真实的工程场景:你的团队同时在用:

  • • 闭源 API:Claude、GPT-5、Gemini、DeepSeek API
  • • 自部署 vLLM:内网 Qwen3-32B
  • • 自部署 SGLang:Agent 业务用
  • • 本地 Ollama:开发同学的笔记本
  • • 未来还要接:阿里通义、Moonshot、智谱

如果每家都用自己的 SDK,你的客户端代码要维护 N 套。但如果它们都"长得像" OpenAI API,你的客户端只用 openai 库就够了——只需要改 base_url 和 model 参数

这就是 OpenAI 兼容 API 的事实标准价值

这一篇我们要彻底搞清这个事:

  1. 1. OpenAI API 协议的关键设计
  2. 2. 各家推理框架的"兼容程度"和差异点
  3. 3. 怎么自己实现一个 OpenAI 兼容代理
  4. 4. 怎么设计 LLM Gateway 统一多模型 + 计费 + 限流 + 缓存

读完本文你将能:

  • • 写出符合 OpenAI 协议的兼容 API 实现
  • • 选对 LLM Gateway 工具(LiteLLM / Portkey / 自研)
  • • 在生产环境跑一个多模型路由 + 容灾 + 计费 + 缓存的网关

我们开始。


一、OpenAI 兼容 API:怎么变成「事实标准」的

1.1 历史回顾

  • • 2020.06:GPT-3 API 发布,OpenAI 定义了 /v1/completions 接口
  • • 2023.03:ChatGPT API 上线,/v1/chat/completions 接口诞生
  • • 2023.06:vLLM 第一次提供「OpenAI 兼容 API」选项
  • • 2023 下半年:所有主流推理框架跟进
  • • 2024:Anthropic、Google 等"对手"也开始提供 OpenAI 兼容接口(兼容层)
  • • 2026:OpenAI 兼容已是行业默认

为什么是 OpenAI 的协议被「奉为标准」?

  1. 1. 先发优势:GPT-3 / ChatGPT 火得早,大家先按它对接
  2. 2. 设计合理:协议简洁清晰,支持流式 / Tool Use / 多模态扩展
  3. 3. 生态压力openai Python SDK 太流行,所有客户端都用它
  4. 4. 社区共识:大家都不想发明新协议

1.2 OpenAI 兼容 API 给工程师带来什么

好处
真实价值
客户端 SDK 通用
openai
 库一统天下
切换模型零成本
改 base_url 即可
工具生态共享
LangChain / LlamaIndex 等开箱即用
测试方便
curl / Postman 直接测
AB 测试简单
多个 URL 随便切

二、OpenAI API 协议详解

2.1 核心端点

OpenAI API 主要有这几个端点:

GET  /v1/models                     ── 列出可用模型
POST /v1/chat/completions           ── 对话补全(主力接口)
POST /v1/completions                ── 文本补全(旧版,少用)
POST /v1/embeddings                 ── 文本向量化
POST /v1/audio/transcriptions       ── 音频转文字
POST /v1/audio/speech               ── 文字转语音
POST /v1/images/generations         ── 图像生成
POST /v1/files                      ── 文件上传
POST /v1/batches                    ── 批处理(异步)

大模型推理服务最关键的是 chat completions 和 embeddings

2.2 /v1/chat/completions 详解

完整请求体:

{
"model":"qwen3-32b",
"messages":[
{"role":"system","content":"你是助手"},
{"role":"user","content":"解释 KV Cache"}
],
"temperature":0.7,
"top_p":0.9,
"max_tokens":500,
"n":1,
"stream":false,
"stop":["\n\n"],
"presence_penalty":0,
"frequency_penalty":0,
"logit_bias":{},
"user":"user-id-123",

"tools":[...],
"tool_choice":"auto",

"response_format":{"type":"json_object"},
"seed":42,

"logprobs":false,
"top_logprobs":null
}

完整响应

{
"id":"chatcmpl-xxx",
"object":"chat.completion",
"created":1735000000,
"model":"qwen3-32b",
"choices":[{
"index":0,
"message":{
"role":"assistant",
"content":"KV Cache 是..."
},
"finish_reason":"stop"
}],
"usage":{
"prompt_tokens":25,
"completion_tokens":150,
"total_tokens":175
}
}

2.3 流式输出(SSE)

stream: true 时返回 Server-Sent Events:

data: {"id":"chatcmpl-xxx","choices":[{"delta":{"role":"assistant","content":""},"index":0}]}

data: {"id":"chatcmpl-xxx","choices":[{"delta":{"content":"KV"},"index":0}]}

data: {"id":"chatcmpl-xxx","choices":[{"delta":{"content":" Cache"},"index":0}]}

data: {"id":"chatcmpl-xxx","choices":[{"delta":{"content":" 是..."},"index":0}]}

data: {"id":"chatcmpl-xxx","choices":[{"finish_reason":"stop","delta":{},"index":0}]}

data: [DONE]

两个关键点

  1. 1. 每行以 data: 开头,空行分隔
  2. 2. 最后以 data: [DONE] 结束

Python 客户端处理:

from openai import OpenAI

client = OpenAI(base_url="...", api_key="...")
stream = client.chat.completions.create(
    model="qwen3-32b",
    messages=[{"role""user""content""hi"}],
    stream=True,
)

for chunk in stream:
    delta = chunk.choices[0].delta.content or""
print(delta, end="", flush=True)

2.4 Function Calling / Tool Use

让模型能调用外部工具,这是 Agent 的基石:

{
"model":"qwen3-32b",
"messages":[{"role":"user","content":"上海今天天气怎么样?"}],
"tools":[{
"type":"function",
"function":{
"name":"get_weather",
"description":"查询某个城市的天气",
"parameters":{
"type":"object",
"properties":{
"city":{"type":"string"}
},
"required":["city"]
}
}
}],
"tool_choice":"auto"
}

响应:

{
"choices":[{
"message":{
"role":"assistant",
"tool_calls":[{
"id":"call_xxx",
"type":"function",
"function":{
"name":"get_weather",
"arguments":"{\"city\":\"上海\"}"
}
}]
},
"finish_reason":"tool_calls"
}]
}

第二轮,把工具调用结果传回去:

{
"messages":[
{"role":"user","content":"上海今天天气怎么样?"},
{"role":"assistant","tool_calls":[...]},
{"role":"tool","tool_call_id":"call_xxx","content":"晴,25°C"}
]
}

👉 详见 系列第 27 篇:Function Calling / Tool Use 实战

2.5 多模态(Vision)

OpenAI 在 Vision 接入上也定义了事实标准:

{
"model":"qwen-vl-max",
"messages":[{
"role":"user",
"content":[
{"type":"text","text":"这张图里有什么?"},
{"type":"image_url","image_url":{"url":"https://..."}}
]
}]
}

也支持 base64:

{"type":"image_url","image_url":{"url":"data:image/png;base64,iVBORw..."}}

2.6 JSON Mode

强制 JSON 输出:

{
"model":"qwen3-32b",
"messages":[{"role":"user","content":"..."}],
"response_format":{"type":"json_object"}
}

更强的 Structured Outputs(JSON Schema 严格约束):

{
"response_format":{
"type":"json_schema",
"json_schema":{
"name":"person",
"schema":{
"type":"object",
"properties":{
"name":{"type":"string"},
"age":{"type":"number"}
},
"required":["name","age"]
},
"strict":true
}
}
}

框架兼容性

  • • vLLM:支持,靠 outlines / xgrammar 后端
  • • SGLang:最强支持(regex 100% 保证)
  • • Ollama:基本支持
  • • TGI:部分支持

三、各家框架的「兼容程度」与差异

3.1 兼容性对比

特性
vLLM
SGLang
TGI
Ollama
lmdeploy
/v1/chat/completions
/v1/completions
/v1/embeddings
/v1/models
流式输出
Function Calling
Vision (多模态)
JSON Mode
✅ ⭐
Logprobs
seed
(可重复性)

3.2 框架扩展参数(注意非标准)

每家框架都加了"自己的扩展参数",用了就不兼容 OpenAI 标准了

vLLM 扩展

{
"guided_json":{...},// JSON Schema 约束
"guided_regex":"^\\d{4}-\\d{2}$",// 正则约束
"guided_choice":["A","B","C"],// 选项约束
"use_beam_search":true,// beam search
"best_of":4,
"repetition_penalty":1.05,
"lora_request":{"lora_name":"..."}// 多 LoRA 路由
}

SGLang 扩展

{
"regex":"...",
"json_schema":{...},
"ignore_eos":true,
"skip_special_tokens":false
}

生产建议只用标准参数。需要扩展能力时,再做包装。这样切换框架成本低。

3.3 一个真实「兼容性陷阱」

很多人以为"OpenAI 兼容"就是 100% 兼容。事实上是 70-90% 兼容

我们曾遇到的坑:

  • • vLLM 早期版本不支持 seed 参数 → 测试用例随机失败
  • • TGI 的 streaming chunk 格式略有差异 → 客户端 SDK 解析失败
  • • Ollama 的 tool_calls 字段早期被放错位置 → Agent 框架不识别
  • • 某框架对 temperature=0 处理与 OpenAI 不一致 → 输出不稳定

对策

  1. 1. 用 openai 官方 Python SDK 测试,能跑通才能上线
  2. 2. 关键参数(temperature / max_tokens / stream)必须做端到端测试
  3. 3. 灰度上线,监控成功率

四、自己实现一个 OpenAI 兼容代理

4.1 场景

很多团队会自己写一个 OpenAI 兼容代理,原因:

  • • 后端可能是 vLLM、SGLang、本地小模型混合
  • • 需要统一鉴权、限流、计费、监控
  • • 想做 fallback、缓存等高级特性

下面是一个生产可用的极简实现(基于 FastAPI)。

4.2 完整代码(约 200 行)

"""
OpenAI 兼容代理 - 基础版
依赖:pip install fastapi uvicorn httpx
"""

import os
import json
import time
import asyncio
from typing importAny, AsyncGenerator
from fastapi import FastAPI, Request, HTTPException, Header
from fastapi.responses import StreamingResponse, JSONResponse
import httpx

app = FastAPI(title="LLM Proxy")

# 模型 → 后端映射
ROUTING = {
"qwen3-32b":   {"url""http://vllm-qwen:8000",       "real_model""Qwen/Qwen3-32B-Instruct"},
"qwen3-7b":    {"url""http://ollama:11434",         "real_model""qwen3:7b-instruct"},
"deepseek-r1": {"url""http://sglang-r1:30000",      "real_model""deepseek-r1"},
"claude-fall": {"url""https://api.anthropic.com",   "real_model""claude-sonnet-4-6""type""anthropic"},
}

# 鉴权
VALID_KEYS = set(os.getenv("API_KEYS""sk-test").split(","))


defauth(authorization: str | None):
ifnot authorization ornot authorization.startswith("Bearer "):
raise HTTPException(401"Missing API key")
    key = authorization[7:]
if key notin VALID_KEYS:
raise HTTPException(403"Invalid API key")
return key


@app.get("/v1/models")
asyncdeflist_models(authorization: str = Header(None)):
    auth(authorization)
return {
"object""list",
"data": [
            {"id": name, "object""model""owned_by""internal"}
for name in ROUTING
        ]
    }


@app.post("/v1/chat/completions")
asyncdefchat_completions(req: Request, authorization: str = Header(None)):
    user_key = auth(authorization)
    body = await req.json()
    model = body.get("model")

if model notin ROUTING:
raise HTTPException(404f"Model '{model}' not found")

    route = ROUTING[model]
    backend_body = {**body, "model": route["real_model"]}

    stream = body.get("stream"False)

# 记录请求
    start_time = time.time()
    request_id = f"req-{int(start_time*1000)}"

if stream:
return StreamingResponse(
            forward_stream(route, backend_body, request_id, user_key),
            media_type="text/event-stream",
            headers={"X-Request-ID": request_id}
        )
else:
returnawait forward_sync(route, backend_body, request_id, user_key)


asyncdefforward_sync(route, body, req_id, user_key):
"""同步转发"""
    timeout = httpx.Timeout(300.0, connect=10.0)
asyncwith httpx.AsyncClient(timeout=timeout) as client:
try:
            resp = await client.post(
f"{route['url']}/v1/chat/completions",
                json=body,
                headers={"Content-Type""application/json"},
            )
            resp.raise_for_status()
            data = resp.json()
# 记日志(计费、监控)
            log_usage(req_id, user_key, body["model"], data.get("usage", {}))
return JSONResponse(content=data)
except httpx.HTTPStatusError as e:
raise HTTPException(e.response.status_code, e.response.text)
except Exception as e:
raise HTTPException(500str(e))


asyncdefforward_stream(route, body, req_id, user_key) -> AsyncGenerator[bytesNone]:
"""流式转发"""
    timeout = httpx.Timeout(600.0, connect=10.0)
    total_tokens = 0

asyncwith httpx.AsyncClient(timeout=timeout) as client:
asyncwith client.stream(
"POST",
f"{route['url']}/v1/chat/completions",
            json=body,
            headers={"Content-Type""application/json"},
        ) as resp:
if resp.status_code != 200:
                err = await resp.aread()
yieldf'data: {{"error": "{err.decode()}"}}\n\n'.encode()
return

asyncfor line in resp.aiter_lines():
ifnot line:
continue
yieldf"{line}\n\n".encode()
# 统计 token(简化版,实际要解析 chunk)
                total_tokens += 1

    log_usage(req_id, user_key, body["model"], {"completion_tokens": total_tokens})


deflog_usage(req_id, user, model, usage):
"""记录使用量(用于计费、监控)"""
print(f"[USAGE] {req_id} user={user} model={model} usage={usage}")
# 生产环境写 Redis / Kafka / 数据库


if __name__ == "__main__":
import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=8000)

4.3 启动 + 测试

# 启动
API_KEYS=sk-prod-1,sk-prod-2 python proxy.py

# 测试
curl http://localhost:8000/v1/chat/completions \
  -H "Authorization: Bearer sk-prod-1" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen3-32b",
    "messages": [{"role":"user","content":"hi"}],
    "stream": true
  }'

这个代理已经具备

  • • 模型路由
  • • API key 鉴权
  • • 流式 / 非流式转发
  • • 使用量记录
  • • 超时控制

后面我们扩展它加更多特性。


五、LLM Gateway:完整的生产架构

5.1 为什么要 Gateway

随着业务变复杂,简单代理不够用。需要一个完整的 LLM Gateway

                      ┌─────────────┐
应用 1 (聊天) ──┐    │             │   ┌── vLLM (Qwen)
应用 2 (Agent) ─┼──→│ LLM Gateway │ ─┼── SGLang (DeepSeek)
应用 3 (RAG)  ──┤    │             │   ├── Claude API
应用 4 (Code) ──┘    │             │   └── GPT-5 API
                      └─────────────┘
                       ↑↑↑↑↑↑↑↑↑↑↑↑↑
                       鉴权 / 限流 / 计费
                       缓存 / 监控 / 容灾
                       Fallback / 路由 / 灰度

Gateway 的核心职责

  1. 1. 统一接口:所有应用看到的都是 OpenAI 标准
  2. 2. 多后端路由:按模型名 / 优先级 / 业务路由
  3. 3. 鉴权:API Key 管理 + 配额
  4. 4. 限流:QPS / TPM 限制
  5. 5. 计费:token 使用 → 成本核算
  6. 6. 缓存:相同请求复用结果
  7. 7. 监控:延迟、错误率、成本可视化
  8. 8. 容灾:上游失败自动 fallback
  9. 9. 审计:日志、合规审查

5.2 主流 Gateway 方案对比

方案
类型
优势
适合
LiteLLM
开源 Python
100+ 模型支持,社区活跃
首选
 ⭐
Portkey
商业 SaaS
监控强、可视化好
企业
Kong AI Gateway
商业 / 开源
与 Kong API Gateway 集成
已用 Kong
Cloudflare AI Gateway
云服务
全球节点 / 边缘缓存
全球应用
自研
自己写
完全可控
大厂

5.3 LiteLLM 实战

LiteLLM 是 2024 年开源社区最火的 Gateway,它把 100+ 模型 API 都映射到 OpenAI 协议

部署 LiteLLM Proxy

pip install litellm[proxy]

# 创建配置文件 config.yaml
cat > config.yaml << 'EOF'
model_list:
  - model_name: qwen3-32b
    litellm_params:
      model: openai/Qwen/Qwen3-32B-Instruct
      api_base: http://vllm-qwen:8000/v1
      api_key: sk-dummy

  - model_name: claude
    litellm_params:
      model: anthropic/claude-sonnet-4-6
      api_key: os.environ/ANTHROPIC_API_KEY

  - model_name: gpt-5
    litellm_params:
      model: openai/gpt-5
      api_key: os.environ/OPENAI_API_KEY

litellm_settings:
  drop_params: true
  num_retries: 3
  request_timeout: 600
  cache: true
  cache_params:
type: redis
    host: redis
    port: 6379

router_settings:
  routing_strategy: usage-based-routing-v2  # 按用量负载
  fallbacks:
    - "gpt-5": ["claude""qwen3-32b"]      # GPT-5 失败 → fallback
EOF

# 启动
litellm --config config.yaml --port 4000

测试

from openai import OpenAI

client = OpenAI(base_url="http://localhost:4000/v1", api_key="sk-...")

# 用任意模型名
for model in ["qwen3-32b""claude""gpt-5"]:
    r = client.chat.completions.create(
        model=model,
        messages=[{"role""user""content""hi"}],
    )
print(f"{model}{r.choices[0].message.content}")

LiteLLM 内置特性

  • • ✅ 自动 fallback / retry
  • • ✅ Redis 缓存
  • • ✅ 按 API Key 限流和计费
  • • ✅ Prometheus metrics
  • • ✅ Admin UI(用户管理、用量查看)
  • • ✅ Slack / 邮件告警

5.4 关键设计点

模型映射策略

# 简单别名
"smart-fast": ["qwen3-32b"]

# 按优先级
"smart-best": ["claude-opus-4-7""gpt-5""qwen3-32b"]   
# 第一个失败 → 第二个 → ...

# 按权重负载
"smart":
-model:"qwen3-32b"
weight:70
-model:"claude"
weight:30

Fallback 策略

fallbacks = {
"gpt-5": ["claude-sonnet-4-6""qwen3-32b"],
"claude-opus-4-7": ["gpt-5""qwen3-32b"],
}

典型场景

  • • API rate limit 触发 → 切到自部署
  • • 上游返回 5xx → 立即重试到备用
  • • 超时 → 触发 fallback

缓存策略

cache:
type:redis
ttl:3600
key_strategy:hash_of_prompt# 完全相同的 prompt 复用
excluded_models: ["claude-opus-4-7"]   # 关键模型不缓存

注意

  • • 缓存对 temperature > 0 的请求风险大(用户期望随机性)
  • • 推荐只缓存 temperature=0 或带 cache=true 标记的请求

限流策略

rate_limits:
-api_key:"sk-team-a"
rpm:1000# 每分钟请求
tpm:200000# 每分钟 token

-api_key:"sk-team-b"
rpm:500
tpm:100000

计费

# LiteLLM 内置成本计算
model_costs = {
"qwen3-32b": {"input"0.0004"output"0.0012},   # per 1K tokens
"claude-sonnet-4-6": {"input"0.003"output"0.015},
"gpt-5": {"input"0.010"output"0.040},
}

# 每次请求记账
defcalculate_cost(usage, model):
return (
        usage["prompt_tokens"] * model_costs[model]["input"] +
        usage["completion_tokens"] * model_costs[model]["output"]
    ) / 1000

5.5 监控面板

LiteLLM 内置 Admin UI,能看到:

  • • 各模型 QPS / 错误率 / 延迟
  • • 各 API Key 用量 / 成本
  • • Fallback 触发次数
  • • 缓存命中率

也可以接 Prometheus + Grafana 做更专业的监控。


六、生产环境的几个真实问题

6.1 长尾延迟治理

问题:99% 请求快,1% 请求 30s+。

对策

  • • 设置严格超时(30-60 秒)
  • • 长 prompt 走专门通道(不和短 prompt 混 batch)
  • • 慢请求自动降级到小模型

6.2 成本失控

问题:业务突然爆量,月账单暴涨。

对策

  • • API Key 配额硬上限(超额拒绝)
  • • 实时成本监控 + 阈值告警
  • • 大流量场景用便宜模型 + 缓存
  • • 关键 / 极致需求才用顶级模型

6.3 多模型质量不一致

问题:业务有时用 GPT-5、有时 fallback 到 Qwen3-32B,效果差异大。

对策

  • • 同等级模型才互相 fallback
  • • prompt 适当冗余以适配多家模型
  • • 通过 A/B 测试确认 fallback 模型质量

6.4 流式输出的代理坑

问题:流式输出经过代理后断了 / 慢了。

对策

# Nginx
proxy_bufferingoff;
proxy_cacheoff;
proxy_read_timeout600s;
add_header X-Accel-Buffering no;
# FastAPI 代理
return StreamingResponse(
    generator(),
    media_type="text/event-stream",
    headers={"Cache-Control""no-cache""X-Accel-Buffering""no"}
)

七、扩展话题与下一篇预告

7.1 OpenAI 协议之外

虽然 OpenAI 兼容是事实标准,但有些场景需要别的协议:

  • • MCP(Model Context Protocol):Anthropic 推出的 AI 工具协议,2024 年快速崛起
  • • Anthropic Messages API:略有差异,但好处是支持更丰富的 system prompt
  • • gRPC:内部高性能调用用,不走 HTTP

7.2 LLM Gateway 的未来

2026 年 LLM Gateway 的趋势:

  • • 智能路由:根据 prompt 内容自动选最佳模型
  • • Prompt 优化:网关层自动改写 prompt 节省 token
  • • 语义缓存:相似 prompt 也能命中(不只是完全相同)
  • • 观测增强:tracing 完整链路(OpenTelemetry 集成)

7.3 下一篇预告

  • • 第 20 篇:分布式推理 - TP / PP / EP 并行策略详解 —— 部署服务化篇的收官。我们已经多次提到 TP / PP / EP,这一篇会把它们彻底讲透。包括什么场景用什么、混合策略怎么设计、跨机部署的网络要求。

下一篇结束之后,部署服务化篇(第 16-20 篇)正式收官


结语:API 兼容性是 AI 工程化的基石

读完本文你应该明白:

  • • OpenAI 兼容 API 是事实标准——一套客户端代码,N 个后端
  • • 协议细节多——流式、Tool Use、JSON Mode、Vision 都有规范
  • • 各框架"70-90% 兼容"——关键参数务必端到端测试
  • • LLM Gateway 是生产必备——多模型、限流、计费、监控、容灾的统一入口
  • • LiteLLM 是 2026 年开源首选——100+ 模型支持,生态最广
  • • 长尾、成本、质量、流式四大生产问题都有套路化的对策

下一篇我们继续:

  • • 第 20 篇:分布式推理 - TP / PP / EP 并行策略详解 —— 部署服务化篇收官,讲清楚单机多卡 / 多机多卡的所有并行策略选择。

我们下篇见。


📮 关于「码海寻道」
这里是一个聚焦 AI 工程化、大模型部署、后端架构实战的技术专栏。
写最一线的踩坑经验,做最务实的技术拆解。

如果这篇文章对你有启发,欢迎点赞、转发、关注。我们下篇见。

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-06-16 23:12:53 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/753949.html
  2. 运行时间 : 0.273041s [ 吞吐率:3.66req/s ] 内存消耗:4,835.69kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=1d959505f632050c232384463124394e
  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.000897s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001359s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.005463s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000586s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001386s ]
  6. SELECT * FROM `set` [ RunTime:0.000525s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001511s ]
  8. SELECT * FROM `article` WHERE `id` = 753949 LIMIT 1 [ RunTime:0.011370s ]
  9. UPDATE `article` SET `lasttime` = 1781622773 WHERE `id` = 753949 [ RunTime:0.033804s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000720s ]
  11. SELECT * FROM `article` WHERE `id` < 753949 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001041s ]
  12. SELECT * FROM `article` WHERE `id` > 753949 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001081s ]
  13. SELECT * FROM `article` WHERE `id` < 753949 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.002726s ]
  14. SELECT * FROM `article` WHERE `id` < 753949 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.004840s ]
  15. SELECT * FROM `article` WHERE `id` < 753949 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.028303s ]
0.278905s