乐于分享
好东西不私藏

AI Agent 智能体从入门到实战(九):生产级 Agent 架构设计

AI Agent 智能体从入门到实战(九):生产级 Agent 架构设计

大家好,老 J。

经过前八期,我们已经掌握了一个完整 Agent 的核心能力。但还有一个问题没解决:如何把 Agent 从原型变成生产级服务

这期不讲具体代码,而是讲架构设计——高可用、异步、缓存、成本优化、安全防护。

一、生产级 Agent 架构全景

┌─────────────────────────────────────────────────────────────────┐
│                   生产级 Agent 架构                               │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│   客户端 ──► API Gateway ──► 负载均衡 ──► Agent 服务集群          │
│                                            │                      │
│                    ┌───────────────────────┼───────────────────┐  │
│                    │                       │                   │  │
│                    ▼                       ▼                   ▼  │
│              ┌───────────┐          ┌───────────┐       ┌───────────┐
│              │  Agent 1  │          │  Agent 2  │       │  Agent N  │
│              └─────┬─────┘          └─────┬─────┘       └─────┬─────┘
│                    │                       │                   │
│                    └───────────┬───────────┴───────────────────┘
│                                │
│        ┌───────────────────────┼───────────────────────┐
│        │                       │                       │
│        ▼                       ▼                       ▼
│   ┌─────────┐            ┌─────────┐            ┌─────────┐
│   │  Redis  │            │   MQ    │            │   DB    │
│   │  缓存   │            │  队列   │            │  持久化  │
│   └─────────┘            └─────────┘            └─────────┘
│                                │
│                                ▼
│                         ┌─────────────┐
│                         │  LLM 服务   │
│                         │ (多模型降级) │
│                         └─────────────┘
│                                                                  │
└─────────────────────────────────────────────────────────────────┘

二、高可用架构

2.1 无状态设计

# stateless_agent.py
"""
无状态 Agent 设计 - 支持水平扩展
"""


classStatelessAgent:
"""无状态 Agent,状态存储在 Redis"""

def__init__(self, redis_client):
self.redis = redis_client
self.llm = ChatOpenAI()

asyncdefchat(self, session_id: str, message: str) -> str:
# 从 Redis 加载历史
        history = self.redis.get(f"session:{session_id}")

# 调用 LLM
        response = awaitself.llm.acall(message, history)

# 保存历史到 Redis
self.redis.setex(f"session:{session_id}"3600, new_history)

return response

2.2 健康检查与优雅停机

# health_check.py
from fastapi import FastAPI
from contextlib import asynccontextmanager
import asyncio
import signal

app = FastAPI()

@app.get("/health/liveness")
asyncdefliveness():
"""存活探针"""
return {"status""alive"}

@app.get("/health/readiness")
asyncdefreadiness():
"""就绪探针"""
# 检查依赖服务状态
    checks = {
"llm"await check_llm_health(),
"redis"await check_redis_health()
    }

ifall(checks.values()):
return {"status""ready""checks": checks}
return {"status""not_ready""checks": checks}, 503

@asynccontextmanager
asyncdeflifespan(app: FastAPI):
# 启动时初始化
await init_agent()
yield
# 关闭时优雅停机
await shutdown_agent()

三、异步处理与队列

3.1 同步 vs 异步

方式
优点
缺点
适用场景
同步
简单、实时
阻塞、易超时
简单问答
异步
高并发、不阻塞
复杂、需要轮询
长任务、批处理

3.2 异步任务队列

# async_queue.py
"""
使用 Celery + Redis 实现异步任务队列
"""


from celery import Celery
from typing importDictAny

# 配置 Celery
app = Celery('agent_tasks', broker='redis://localhost:6379/0')

@app.task(bind=True, max_retries=3, soft_time_limit=60)
defprocess_agent_task(self, task_id: str, user_input: str) -> Dict[strAny]:
"""异步处理 Agent 任务"""
try:
        agent = Agent()
        result = agent.invoke(user_input)

# 保存结果到 Redis
        redis_client.setex(f"task_result:{task_id}"3600, result)

return {"status""completed""result": result}

except Exception as e:
# 重试机制
self.retry(exc=e, countdown=60)
return {"status""failed""error"str(e)}


# API 层
from fastapi import BackgroundTasks

@app.post("/agent/async")
asyncdefagent_async(request: Request, background_tasks: BackgroundTasks):
    task_id = str(uuid.uuid4())

# 异步执行
    background_tasks.add_task(process_agent_task, task_id, request.message)

return {"task_id": task_id, "status""pending"}

@app.get("/agent/result/{task_id}")
asyncdefget_result(task_id: str):
    result = redis_client.get(f"task_result:{task_id}")
if result:
return {"status""completed""result": result}
return {"status""pending"}

四、缓存策略

4.1 多级缓存

# cache_strategy.py
"""
多级缓存策略
本地缓存 → Redis 缓存 → LLM 调用
"""


from functools import lru_cache
import hashlib
import redis
from typing importOptional


classMultiLevelCache:
"""多级缓存"""

def__init__(self):
self.redis_client = redis.Redis(decode_responses=True)
self.local_cache = {}

def_get_key(self, query: str) -> str:
returnf"agent:cache:{hashlib.md5(query.encode()).hexdigest()}"

defget(self, query: str) -> Optional[str]:
# L1: 本地缓存
if query inself.local_cache:
returnself.local_cache[query]

# L2: Redis 缓存
        key = self._get_key(query)
        cached = self.redis_client.get(key)
if cached:
self.local_cache[query] = cached
return cached

returnNone

defset(self, query: str, response: str, ttl: int = 3600):
        key = self._get_key(query)
self.local_cache[query] = response
self.redis_client.setex(key, ttl, response)


classSemanticCache:
"""语义缓存(基于向量相似度)"""

def__init__(self, threshold: float = 0.95):
self.embeddings = OpenAIEmbeddings()
self.vectorstore = Chroma()
self.threshold = threshold

defget(self, query: str) -> Optional[str]:
        query_embedding = self.embeddings.embed_query(query)
        results = self.vectorstore.similarity_search_by_vector(
            query_embedding, k=1
        )

if results and results[0].score > self.threshold:
return results[0].metadata["response"]
returnNone

defset(self, query: str, response: str):
        embedding = self.embeddings.embed_query(query)
self.vectorstore.add_texts(
            [query], 
            metadatas=[{"response": response, "embedding": embedding}]
        )

4.2 缓存策略选择

策略
适用场景
TTL 建议
精确匹配
FAQ、固定问题
24 小时
语义匹配
相似问题
12 小时
结果缓存
相同参数
1 小时
预热缓存
热点问题
永久

五、成本优化

5.1 Token 优化策略

# cost_optimizer.py
"""
成本优化器
"""


classCostOptimizer:
"""控制 Token 消耗"""

def__init__(self, max_tokens_per_request=2000):
self.max_tokens_per_request = max_tokens_per_request

deftruncate_context(self, context: str, max_chars: int = 2000) -> str:
"""截断过长的上下文"""
iflen(context) <= max_chars:
return context
return context[:max_chars] + "...(已截断)"

defsmart_prompt(self, user_input: str, history: list) -> str:
"""智能构建 prompt,只保留关键信息"""
# 只保留最近 3 轮对话
        recent_history = history[-3:] if history else []

# 压缩用户输入
        compressed_input = user_input[:500]

returnself._build_prompt(compressed_input, recent_history)

defestimate_cost(self, prompt_tokens: int, completion_tokens: int, model: str = "gpt-4") -> float:
"""估算成本"""
        rates = {
"gpt-4": {"prompt"0.03"completion"0.06},
"gpt-3.5-turbo": {"prompt"0.001"completion"0.002}
        }

        rate = rates.get(model, rates["gpt-4"])
        cost = (prompt_tokens / 1000) * rate["prompt"] + \
               (completion_tokens / 1000) * rate["completion"]
return cost

5.2 模型降级策略

# model_fallback.py
"""
多模型降级策略
"""


classModelRouter:
"""模型路由器"""

def__init__(self):
self.models = {
"primary""gpt-4",
"secondary""gpt-3.5-turbo",
"fallback""claude-instant"
        }
self.costs = {
"gpt-4"1.0,
"gpt-3.5-turbo"0.1,
"claude-instant"0.05
        }

asyncdefroute(self, user_input: str, context: dict) -> str:
"""智能路由到合适的模型"""

# 简单问题用便宜模型
iflen(user_input) < 50andnotself._needs_reasoning(user_input):
            model = self.models["secondary"]

# 复杂推理用 gpt-4
elifself._needs_reasoning(user_input):
            model = self.models["primary"]

# 默认
else:
            model = self.models["secondary"]

returnawaitself._call_model(model, user_input, context)

asyncdeffallback(self, user_input: str, context: dict) -> str:
"""降级策略"""
for model in [self.models["secondary"], self.models["fallback"]]:
try:
returnawaitself._call_model(model, user_input, context)
except Exception:
continue
return"服务繁忙,请稍后重试"

六、安全防护

6.1 输入/输出过滤

# security.py
"""
安全防护
"""


import re
from typing importList


classContentFilter:
"""内容过滤器"""

# 敏感词列表
    SENSITIVE_WORDS = ["暴力""色情""政治敏感词"]

# 注入模式
    INJECTION_PATTERNS = [
r"ignore previous instructions",
r"system\s*:",
r"你是一个.*助手",
    ]

deffilter_input(self, user_input: str) -> str:
"""过滤用户输入"""
# 移除注入尝试
for pattern inself.INJECTION_PATTERNS:
            user_input = re.sub(pattern, "", user_input, flags=re.IGNORECASE)

# 检查敏感词
for word inself.SENSITIVE_WORDS:
if word in user_input:
raise ValueError(f"输入包含敏感词: {word}")

return user_input.strip()[:2000]

deffilter_output(self, output: str) -> str:
"""过滤模型输出"""
# 脱敏处理
        output = self._redact_pii(output)

# 检查敏感信息
        output = self._check_sensitive(output)

return output

def_redact_pii(self, text: str) -> str:
"""脱敏处理"""
# 手机号脱敏
        text = re.sub(r'1[3-9]\d{9}''138****0000', text)
# 邮箱脱敏
        text = re.sub(r'\b\w+@\w+\.\w+\b''user@example.com', text)
return text

6.2 限流与配额

# rate_limit.py
"""
限流与配额
"""


import time
from collections import defaultdict
from typing importDict


classTokenBucket:
"""令牌桶限流"""

def__init__(self, capacity: int, refill_rate: float):
self.capacity = capacity
self.refill_rate = refill_rate
self.tokens = capacity
self.last_refill = time.time()

defconsume(self, tokens: int = 1) -> bool:
        now = time.time()
        elapsed = now - self.last_refill
self.tokens = min(self.capacity, self.tokens + elapsed * self.refill_rate)
self.last_refill = now

ifself.tokens >= tokens:
self.tokens -= tokens
returnTrue
returnFalse


classRateLimiter:
"""多维度限流器"""

def__init__(self):
self.limiters: Dict[str, TokenBucket] = {}

defcheck_limit(self, user_id: str, api_key: str) -> bool:
"""检查是否超过限制"""
# 用户级别限制:100 次/分钟
        user_key = f"user:{user_id}"
if user_key notinself.limiters:
self.limiters[user_key] = TokenBucket(100100/60)

# API Key 级别限制:1000 次/分钟
        api_key = f"api:{api_key}"
if api_key notinself.limiters:
self.limiters[api_key] = TokenBucket(10001000/60)

returnself.limiters[user_key].consume() andself.limiters[api_key].consume()

七、监控与告警

# monitoring.py
"""
监控与告警
"""


from dataclasses import dataclass
from typing importListDict
import logging


@dataclass
classAlert:
"""告警"""
    name: str
    level: str# info, warning, critical
    message: str
    value: float
    threshold: float


classAgentMonitor:
"""Agent 监控器"""

def__init__(self):
self.logger = logging.getLogger(__name__)
self.metrics = {
"requests_total"0,
"requests_success"0,
"requests_failed"0,
"avg_latency_ms"0,
"token_usage"0
        }

defrecord_request(self, success: bool, latency_ms: float, tokens: int):
"""记录请求"""
self.metrics["requests_total"] += 1

if success:
self.metrics["requests_success"] += 1
else:
self.metrics["requests_failed"] += 1

# 滑动平均延迟
self.metrics["avg_latency_ms"] = (
self.metrics["avg_latency_ms"] * 0.9 + latency_ms * 0.1
        )
self.metrics["token_usage"] += tokens

# 检查告警
self._check_alerts()

def_check_alerts(self):
"""检查告警条件"""
        alerts = []

# 错误率告警
        error_rate = self.metrics["requests_failed"] / max(1self.metrics["requests_total"])
if error_rate > 0.05:  # >5%
            alerts.append(Alert(
                name="high_error_rate",
                level="critical",
                message="错误率过高",
                value=error_rate,
                threshold=0.05
            ))

# 延迟告警
ifself.metrics["avg_latency_ms"] > 5000:  # >5秒
            alerts.append(Alert(
                name="high_latency",
                level="warning",
                message="响应延迟过高",
                value=self.metrics["avg_latency_ms"],
                threshold=5000
            ))

for alert in alerts:
self._send_alert(alert)

def_send_alert(self, alert: Alert):
"""发送告警"""
self.logger.warning(f"[{alert.level}{alert.name}{alert.message}")
# 可接入钉钉/企微/邮件

八、成本估算公式

# cost_estimate.py
"""
成本估算工具
"""


defestimate_monthly_cost(
    daily_requests: int,
    avg_tokens_per_request: int,
    model: str = "gpt-4",
    cache_hit_rate: float = 0.3
) -> dict:
"""估算月度成本"""

    rates = {
"gpt-4": {"prompt"0.03"completion"0.06},
"gpt-4-turbo": {"prompt"0.01"completion"0.03},
"gpt-3.5-turbo": {"prompt"0.001"completion"0.002}
    }

    monthly_requests = daily_requests * 30
    cached_requests = monthly_requests * cache_hit_rate
    llm_requests = monthly_requests - cached_requests

# 假设 prompt:completion = 2:1
    prompt_tokens = avg_tokens_per_request * 2/3
    completion_tokens = avg_tokens_per_request * 1/3

    rate = rates.get(model, rates["gpt-3.5-turbo"])

    cost_per_request = (prompt_tokens / 1000) * rate["prompt"] + \
                       (completion_tokens / 1000) * rate["completion"]

    total_cost = llm_requests * cost_per_request

return {
"model": model,
"monthly_requests": monthly_requests,
"cache_hit_rate": cache_hit_rate,
"llm_calls": llm_requests,
"cost_per_request_usd"round(cost_per_request, 4),
"estimated_monthly_cost_usd"round(total_cost, 2)
    }

# 示例:估算
# estimate_monthly_cost(10000, 500, "gpt-3.5-turbo", 0.3)
# → {"estimated_monthly_cost_usd": ~12}

九、部署架构建议

场景
并发
推荐架构
个人项目
< 10
单机 + 内存缓存
小团队
10-100
多副本 + Redis + 基本监控
企业级
100-1000
集群 + MQ + 多模型 + 全监控
大规模
> 1000
K8s + 自动伸缩 + 多区域

十、下期预告

AI Agent 智能体从入门到实战(十):智能编程助手实战

  • • 代码生成与补全
  • • 代码解释与重构
  • • Bug 定位与修复
  • • 单元测试生成

我是老 J,下期见。

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-06-16 23:09:55 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/754200.html
  2. 运行时间 : 0.131899s [ 吞吐率:7.58req/s ] 内存消耗:4,811.70kb 文件加载: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.000945s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001479s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000740s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000702s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001386s ]
  6. SELECT * FROM `set` [ RunTime:0.000613s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001497s ]
  8. SELECT * FROM `article` WHERE `id` = 754200 LIMIT 1 [ RunTime:0.001278s ]
  9. UPDATE `article` SET `lasttime` = 1781622595 WHERE `id` = 754200 [ RunTime:0.001703s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000593s ]
  11. SELECT * FROM `article` WHERE `id` < 754200 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001189s ]
  12. SELECT * FROM `article` WHERE `id` > 754200 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001044s ]
  13. SELECT * FROM `article` WHERE `id` < 754200 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001851s ]
  14. SELECT * FROM `article` WHERE `id` < 754200 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.003013s ]
  15. SELECT * FROM `article` WHERE `id` < 754200 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.008844s ]
0.135909s