乐于分享
好东西不私藏

OpenWebUI 零源码改造接入自研 RAG 知识库|完整落地教程(私有化部署)

OpenWebUI 零源码改造接入自研 RAG 知识库|完整落地教程(私有化部署)

前言

很多企业私有化部署 OpenWebUI 后,不想用内置向量库,想对接自己开发的 RAG 检索服务,但又忌讳修改 UI 底层源码、担心升级后失效。本文给一套无侵入、纯管道 + 函数插件的落地方案,无需改动 OpenWebUI 一行源码,同时实现两大核心能力:

  1. 1、对话时自动调用自研 RAG 知识库检索上下文;
  2. 2、内置大文件上传面板,直接对接自研 RAG 文件分片上传接口。

一、前置环境准备

1、本地私有化 OpenWebUI

已完成服务器私有化部署,可正常访问、管理员账号登录、模型可正常调用。

2、自研 RAG 完整 API 服务

自有 RAG 后台,提供全套知识库接口:创建库、文件上传、文档管理、检索、任务状态查询等标准 REST 接口。

二、核心方案:Pipelines 管道打通 RAG 检索链路

步骤 1:拉取官方 Pipelines 管道项目

Pipelines 是 OpenWebUI 官方扩展插件体系,用来自定义对话前置 、后置逻辑,RAG 检索逻辑全部放在管道里实现。

# 拉取代码 
git clone https://github.com/open-webui/pipelines.git cd pipelines  
# 创建虚拟环境 
python -m venv .venv 
source .venv/bin/activate  
# 安装依赖(清华源加速) 
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

步骤 2:改造 Langgraph 流式推理服务

使用langgraph_example.py封装大模型推理 + RAG 联动逻辑,解决三大痛点:

  • (1)后台 nohup 运行,无需交互式输入密钥;
  • (2)异步流式输出,区分「思考过程 + 正式回答」双数据流;
  • (3)字符缓冲分片推送,避免细碎卡顿,兼容 Nginx 流式输出。

关键改造点:

  1. (1)加载.env环境变量,后台运行无交互;
  2. (2)增加 30 字符缓冲阈值,批量推送流数据;
  3. (3)标准 SSE 返回格式,兼容 OpenWebUI 流式渲染;
  4. (4)单独输出reasoning_content思考字段,界面区分思维链与回答。
改造后langgraph_example.py:

"""

title: Langgraph stream integration

author: bartonzzx

author_url: https://github.com/bartonzzx

git_url: 

description: Integrate langgraph with open webui pipeline

required_open_webui_version: 0.4.3

requirements: none

version: 0.4.3

licence: MIT

"""

import os

import sys

import json

from dotenv import load_dotenv

from typing import Annotated, Literal

from typing_extensions import TypedDict

from fastapi import FastAPI

from fastapi.responses import StreamingResponse

from langgraph.graph import StateGraph, START, END

from langgraph.graph.message import add_messages

from langchain_openai import ChatOpenAI

from langgraph.config import get_stream_writer

# ========== 修复1:移除getpass,加载.env环境变量,兼容后台nohup ==========

加载同目录.env文件,无交互式输入

load_dotenv()

def _set_env(var: str):

后台运行禁用交互式输入,缺失环境变量直接抛出明确异常

if not os.environ.get(var):

raise RuntimeError(f"环境变量 {var} 未配置,请在当前目录.env文件中填写")

读取密钥,不会触发终端输入

_set_env("OPENAI_API_KEY")

'''

Define Langgraph

'''

新增:全局缓冲阈值,30字符批量输出

BUFFER_THRESHOLD = 30

def generate_custom_stream(type: Literal["think","normal"], buffer_obj, content: str):

写入缓冲区,不再直接推送

buffer_obj["buf"] += content

达到阈值才输出

if len(buffer_obj["buf"]) >= BUFFER_THRESHOLD:

custom_stream_writer = get_stream_writer()

custom_stream_writer({type: buffer_obj["buf"]})

buffer_obj["buf"] = ""

class State(TypedDict):

messages: Annotated[list, add_messages]

llm = ChatOpenAI(

model="qwen3.6-27b",

temperature=0.1,

base_url='http://10.199.5.10:8003/v1',

api_key=os.getenv("OPENAI_API_KEY", "dummy_key") # 从环境变量读取,兜底默认

)

# ========== 修复2:同步llm.invoke阻塞问题,改为异步astream实时输出 + 字符缓冲 ==========

async def chatbot(state: State):

初始化缓冲区

think_buf = {"buf": ""}

normal_buf = {"buf": ""}

异步分步输出思考内容,不阻塞主流

async for chunk in llm.astream(["Please reasoning:"] + state["messages"]):

generate_custom_stream("think", think_buf, chunk.content)

思考流剩余缓存强制输出

if think_buf["buf"]:

custom_stream_writer = get_stream_writer()

custom_stream_writer({"think": think_buf["buf"]})

async for chunk in llm.astream(state["messages"]):

generate_custom_stream("normal", normal_buf, chunk.content)

回答流剩余缓存强制输出

if normal_buf["buf"]:

custom_stream_writer = get_stream_writer()

custom_stream_writer({"normal": normal_buf["buf"]})

return {"messages": [normal_buf["buf"]]}

# Define graph

graph_builder = StateGraph(State)

# Define nodes

graph_builder.add_node("chatbot", chatbot)

graph_builder.add_edge("chatbot", END)

# Define edges

graph_builder.add_edge(START, "chatbot")

# Compile graph

graph = graph_builder.compile()

'''

Define api processing 

'''

app = FastAPI(

title="Langgraph API",

description="Langgraph API",

)

@app.get("/test")

async def test():

return {"message": "Hello World"}

@app.post("/stream")

async def stream(inputs: State):

async def event_stream():

try:

stream_start_msg = {

'choices': 

[

{

'delta': {}, 

'finish_reason': None

}

]

}

yield f"data: {json.dumps(stream_start_msg)}\n\n"

#接口层二次缓冲兜底,防止极端细碎分片

think_buffer = ""

normal_buffer = ""

# Processing langgraph stream response withblock support

async for event in graph.astream(input=inputs, stream_mode="custom"):

print(f"stream event: {event}")

think_content = event.get("think", None)

normal_content = event.get("normal", None)

分段推送思考流

if think_content:

think_buffer += think_content

攒够字符一次性输出

if len(think_buffer) >= BUFFER_THRESHOLD:

think_msg = {

'choices': 

[

{

'delta':

{

'reasoning_content': think_buffer, 

},

'finish_reason': None

}

]

}

yield f"data: {json.dumps(think_msg)}\n\n"

think_buffer = ""

分段推送回答流

if normal_content:

normal_buffer += normal_content

if len(normal_buffer) >= BUFFER_THRESHOLD:

normal_msg = {

'choices': 

[

{

'delta':

{

'content': normal_buffer, 

},

'finish_reason': None

}

]

}

yield f"data: {json.dumps(normal_msg)}\n\n"

normal_buffer = ""

#循环结束,输出缓冲区剩余所有文字

if think_buffer:

think_msg = {

'choices': 

[

{

'delta':

{

'reasoning_content': think_buffer, 

},

'finish_reason': None

}

]

}

yield f"data: {json.dumps(think_msg)}\n\n"

if normal_buffer:

normal_msg = {

'choices': 

[

{

'delta':

{

'content': normal_buffer, 

},

'finish_reason': None

}

]

}

yield f"data: {json.dumps(normal_msg)}\n\n"

# End of the stream

stream_end_msg = {

'choices': [ 

{

'delta': {}, 

'finish_reason': 'stop'

}

]

}

yield f"data: {json.dumps(stream_end_msg)}\n\n"

yield f"data: [DONE]\n\n" # 兼容OpenAI标准SSE结束标记

except Exception as e:

print(f"Stream error: {e}", file=sys.stderr)

error_msg = {

"error": {"message": str(e), "code": 500}

}

yield f"data: {json.dumps(error_msg)}\n\n"

return StreamingResponse(

event_stream(), 

media_type="text/event-stream",

headers={

"Cache-Control": "no-cache",

"Connection": "keep-alive",

"X-Accel-Buffering": "no" # 关闭nginx缓冲,流式实时输出

}

)

if __name__ == "__main__":

import uvicorn

固定监听0.0.0.0:8863,移除--reload避免多进程IO崩溃

uvicorn.run(app, host="0.0.0.0", port=8863)
启动服务命令:
nohup pythonlanggraph_example.py> langgraph_server.log2>&1 &

步骤 3:自定义 RAG 管道脚本 rag_custom_pipeline.py

  1. 1、在 pipelines 根目录新建rag_custom_pipeline.py,定义 Pipeline 类,负责转发对话请求到 Langgraph 服务、调用自研 RAG 检索接口拼接上下文;
  2. 2、修改config.py配置管道目录路径,指向本地 pipelines 项目文件夹:
步骤 4:启动 Pipelines 管道服务

nohup uvicorn main:app --host 0.0.0.0 --port 9099 > pipeline.log 2>&1 &

Pipelines启动成功后,自动加载Pipelines/Pipelines/下的所有模块:

步骤5:使用管理员账户进入OpenWebUI,进入管理员面板,配置Pipelines服务:
进入Pipelines就能看到添加的RAG知识库服务:

回到新对话页面,顶部下拉选择,则可选择添加的自定义知识库模型进行会话检索:

步骤6:接入自定义知识库知识上传接口(最小化接入,不需要修改OpenWebUI任何源码):
使用管理员账户,进入OpenWebUI管理员面板,选择函数,新建函数

粘贴以下方法:

"""

title:大文件上传知识库面板

author: Custom

version: 1.1

description: 异步上传带进度条,上传中显示文字提示,上传完成展示后端返回结果

"""

from pydantic import BaseModel

from typing import Optional, Generator

class Pipe:

class Valves(BaseModel):

pass

def __init__(self):

self.valves = self.Valves()

def pipes(self):

return [{"id": "kb-file-upload-progress", "name": "大于100M文件上传面板"}]

def pipe(

self, body: dict, __user__: Optional[dict] = None

) -> Generator[str, None, None]:

html_page = """

<!DOCTYPE html>

<html lang="zh-CN">

<head>

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>大文件上传</title>

<style>

body {

background: #111827;

color: #f3f4f6;

padding: 24px;

font-family: system-ui, -apple-system, sans-serif;

}

h2 {

margin-bottom: 20px;

color: #e5e7eb;

}

input[type="file"] {

color: #fff;

padding: 8px 0;

}

button {

padding: 8px 20px;

font-size: 15px;

cursor: pointer;

margin-right: 10px;

}

.upload-btn {

background: #1677ff;

color: #fff;

border: none;

border-radius: 4px;

}

.upload-btn:hover {

background: #4096ff;

}

.upload-btn:disabled {

background: #8cb8ff;

cursor: not-allowed;

}

.clear-btn {

background: #f5f5f5;

color: #333;

border: 1px solid #ccc;

border-radius: 4px;

}

.clear-btn:hover {

background: #e8e8e8;

}

.progress-wrap {

width: 100%;

height: 12px;

background: #27272a;

border-radius: 6px;

margin: 16px 0;

overflow: hidden;

display: none;

}

.progress-bar {

height: 100%;

width: 0%;

background: #1677ff;

transition: width 0.1s linear;

}

.result-box {

margin-top: 16px;

padding: 12px;

border-radius: 6px;

white-space: pre-wrap;

display: none;

}

.success {

background: #163b2e;

border: 1px solid #22c55e;

color: #4ade80;

}

.error {

background: #3b1c1c;

border: 1px solid #ef4444;

color: #f87171;

}

</style>

</head>

<body>

<h2>大文件上传 - 公司标准T知识库</h2>

<input type="file" name="files" id="fileInput" multiple>

<br><br>

<button id="submitBtn" class="upload-btn">上传并构建知识库</button>

<button type="button" class="clear-btn" onclick="clearFiles()">清空已选文件</button>

<div class="progress-wrap" id="progressWrap">

<div class="progress-bar" id="progressBar"></div>

</div>

<div id="progressText"></div>

<div class="result-box" id="resultBox"></div>

<script>

const fileInput = document.getElementById('fileInput');

const submitBtn = document.getElementById('submitBtn');

const progressWrap = document.getElementById('progressWrap');

const progressBar = document.getElementById('progressBar');

const progressText = document.getElementById('progressText');

const resultBox = document.getElementById('resultBox');

const uploadUrl = "http://10.199.5.20:8000/api/upload/?knowledge_base=公司标准T";

function clearFiles() {

fileInput.value = '';

progressWrap.style.display = 'none';

progressText.textContent = '';

progressBar.style.width = '0%';

resultBox.style.display = 'none';

}

function showResult(text, isSuccess) {

resultBox.textContent = text;

resultBox.className = `result-box ${isSuccess ? 'success' : 'error'}`;

resultBox.style.display = 'block';

}

submitBtn.addEventListener('click', async () => {

const files = fileInput.files;

if (!files.length) {

showResult("请先选择需要上传的文件", false);

return;

}

submitBtn.disabled = true;

progressWrap.style.display = 'block';

progressBar.style.width = '0%';

// 上传开始显示固定提示文字

progressText.textContent = "正在上传中,请稍等......";

resultBox.style.display = 'none';

const formData = new FormData();

for (let file of files) {

formData.append("files", file);

}

const xhr = new XMLHttpRequest();

xhr.open("POST", uploadUrl);

xhr.upload.addEventListener("progress", (e) => {

if (e.lengthComputable) {

const percent = Math.round((e.loaded / e.total) * 100);

progressBar.style.width = `${percent}%`;

// 不再更新百分比文字,保持固定提示

}

});

xhr.onload = () => {

submitBtn.disabled = false;

// 上传完成清空上传提示文字

progressText.textContent = "";

if (xhr.status >= 200 && xhr.status < 300) {

let resText = "";

try {

const resJson = JSON.parse(xhr.responseText);

resText = `上传完成!接口返回:\n${JSON.stringify(resJson, null, 2)}`;

} catch (err) {

resText = `上传完成!原始返回:\n${xhr.responseText}`;

}

showResult(resText, true);

} else {

showResult(`上传失败,状态码:${xhr.status}\n响应内容:${xhr.responseText}`, false);

}

};

xhr.onerror = () => {

submitBtn.disabled = false;

progressText.textContent = "";

showResult("网络请求失败,请检查接口地址或后端CORS跨域配置", false);

};

xhr.send(formData);

});

</script>

</body>

</html>

"""

yield "```html\n" + html_page + "\n```"

点击保存

回到函数界面,启用添加函数功能:

回到对话页面,出现:

对话框随意输入然后点击发送,则会弹出文件上传面板页面:

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-05 09:48:46 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/832294.html
  2. 运行时间 : 0.099362s [ 吞吐率:10.06req/s ] 内存消耗:4,755.63kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=2643011ebe9f4c9b4fbcc6a7200e57da
  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.000726s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000879s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000353s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000274s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000555s ]
  6. SELECT * FROM `set` [ RunTime:0.000194s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000577s ]
  8. SELECT * FROM `article` WHERE `id` = 832294 LIMIT 1 [ RunTime:0.000522s ]
  9. UPDATE `article` SET `lasttime` = 1783216126 WHERE `id` = 832294 [ RunTime:0.005811s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000262s ]
  11. SELECT * FROM `article` WHERE `id` < 832294 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000550s ]
  12. SELECT * FROM `article` WHERE `id` > 832294 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000417s ]
  13. SELECT * FROM `article` WHERE `id` < 832294 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.000604s ]
  14. SELECT * FROM `article` WHERE `id` < 832294 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.002170s ]
  15. SELECT * FROM `article` WHERE `id` < 832294 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.004844s ]
0.101127s