当前位置:首页>python>CVXPY, 一种嵌入 Python 的凸优化问题建模语言

CVXPY, 一种嵌入 Python 的凸优化问题建模语言

  • 2026-01-31 19:19:30
CVXPY, 一种嵌入 Python 的凸优化问题建模语言

CVXPY, 一种嵌入 Python 的凸优化问题建模语言

凸优化问题的求解,在实际问题中还是有很多应用场景的,我在CVX,免费开源的凸优化建模MATLAB工具包介绍了其在MATLAB,功能齐全的工程计算软件中的应用. 然而,我发现CVX在python中更新频率很快,而在matlab中的更新却慢太多了,于是就整个cvxpy的介绍.


CVXPY 是一种嵌入在 Python 中的凸优化问题建模语言。

它会自动将问题转换为标准形式,调用求解器,并解包结果。

CVXPY 的官方文档位于 cvxpy.org

简介

CVXPY 是一个嵌入在 Python 中的凸优化问题建模语言。它允许你以自然的、数学化的方式表达优化问题,而无需受限于求解器要求的标准形式。

例如,以下代码求解一个带上下界约束的最小二乘问题:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

import cvxpy as cpimport numpy# 问题数据m = 30n = 20numpy.random.seed(1)A = numpy.random.randn(m, n)b = numpy.random.randn(m)# 构建问题x = cp.Variable(n)objective = cp.Minimize(cp.sum_squares(A @ x - b))constraints = [0 <= x, x <= 1]prob = cp.Problem(objective, constraints)# prob.solve() 返回最优目标函数值result = prob.solve()# x.value 存储最优解向量print(x.value)# 约束的最优拉格朗日乘子存储在 constraint.dual_value 中print(constraints[0].dual_value)

使用 CVXPY,你可以建模以下类型的优化问题:

  • • 凸优化问题(convex optimization problems)
  • • 混合整数凸优化问题(mixed-integer convex optimization problems)
  • • 几何规划(geometric programs)
  • • 准凸规划(quasiconvex programs)

值得注意的是,CVXPY 本身不是求解器,它仅仅是提供了一种建模语言,需要依赖以下开源求解器:常用的开源免费求解器

学术授权或购买的商业优化求解器

CVXPY 起源于斯坦福大学的一个研究项目,如今由来自世界各地的研究人员和工程师共同维护和改进。


安装(Installation)

CVXPY 可在 PyPI 上获取,通过以下命令安装:

1

pip install cvxpy

也可以通过 conda 安装:

1

conda install -c conda-forge cvxpy

CVXPY 依赖以下组件:

  • • Python ≥ 3.11
  • • Clarabel ≥ 0.5.0
  • • OSQP ≥ 1.0.0
  • • SCS ≥ 3.2.4.post1
  • • NumPy ≥ 2.0.0
  • • SciPy ≥ 1.13.0
  • • highspy ≥ 1.11.0

详细安装说明请参见官方 Installation Guide(安装指南)[2]


入门(Getting Started)

若你初次接触 CVXPY,可参考以下资源:

  • • 官方 CVXPY 教程(official tutorial)[3]
  • • 示例库(example library)[4]
  • • API 参考文档(API reference)[5]

社区(Community)

CVXPY 社区由来自全球的研究人员、数据科学家、软件工程师和学生组成,诚邀你的加入!

  • • 若希望与社区实时交流,请加入我们的 Discord[6] 服务。
  • • 若希望进行更深入的讨论,请使用 GitHub Discussions[7]
  • • 若要报告缺陷或提出功能建议,请使用 GitHub Issues[8]

请文明交流,遵守社区的行为准则(code of conduct)[9]


贡献(Contributing)

首先,请通过源码安装 CVXPY。之后,你可以从以下方式开始贡献:

  • • 阅读源码,改进文档,解决 TODO 项;
  • • 改进网站文档;
  • • 浏览 issue 列表,寻找标记为 “help wanted” 的问题;
  • • 优化示例库;
  • • 添加性能基准测试(benchmark)。

若你希望向示例库添加新示例或实现新功能,请先与我们沟通,以确保方向一致。所有贡献均应以 pull request(拉取请求) 提交。

CVXPY 开发团队成员将审阅并指导你完成。

开始贡献前,请阅读 贡献指南(contributing guide)[10]


团队(Team)

CVXPY 是一个社区驱动的项目,由众多研究者和工程师共同开发、维护与完善。

主要维护者包括:

  • • Steven Diamond
  • • Akshay Agrawal
  • • Riley Murray
  • • Philipp Schiele
  • • Bartolomeo Stellato
  • • Parth Nobel

此外,长期以来对项目有重要贡献的人员还包括:

Stephen Boyd、Eric Chu、Robin Verschueren、Jaehyun Park、Enzo Busseti、AJ Friend、Judson Wilson、Chris Dembia、William Zhang 等。

更多关于团队及管理流程的信息,请参阅 文档governance document[11]

实例演示

下面的代码展示了如何在 CVXPY 中求解一个简单的优化问题[3]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

import cvxpy as cp# 创建两个标量优化变量x = cp.Variable()y = cp.Variable()# 创建两个约束条件constraints = [x + y == 1,               x - y >= 1]# 构造目标函数obj = cp.Minimize((x - y)**2)# 构造并求解问题prob = cp.Problem(obj, constraints)prob.solve()  # 返回最优值print("status:", prob.status)print("optimal value", prob.value)print("optimal var", x.value, y.value)

输出:

1
2
3

status: optimaloptimal value 0.999999999761optimal var 1.00000000001 -1.19961841702e-11

由求解方法返回的 status 值为 “optimal”,表示该问题已成功求解。最优值(即这里的 1)表示在遵守约束条件的前提下,目标函数的最小值。最后输出的是实现该最优解的变量值(此例中,x ≈ 1,y ≈ 0)。

  • • prob.solve() 会返回最优值,并更新 prob.status,
  • • prob.value,以及问题中所有变量的 value 属性。

修改问题

问题对象是不可变的(immutable),也就是说,一旦创建便不能修改。若要更改目标函数或约束,需要创建一个新的问题对象。

1
2
3
4
5
6
7
8

# 替换目标函数prob2 = cp.Problem(cp.Maximize(x + y), prob.constraints)print("optimal value", prob2.solve())# 替换约束条件 (x + y == 1)constraints = [x + y <= 3] + prob2.constraints[1:]prob3 = cp.Problem(prob2.objective, constraints)print("optimal value", prob3.solve())

输出:

1
2

optimal value 1.0optimal value 3.00000000006


不可行与无界问题

如果问题不可行(infeasible)或无界(unbounded),status 字段分别设为 "infeasible" 或 "unbounded"。在这种情况下,变量的值不会被更新。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

import cvxpy as cpx = cp.Variable()# 一个不可行的问题prob = cp.Problem(cp.Minimize(x), [x >= 1, x <= 0])prob.solve()print("status:", prob.status)print("optimal value", prob.value)# 一个无界的问题prob = cp.Problem(cp.Minimize(x))prob.solve()print("status:", prob.status)print("optimal value", prob.value)

输出:

1
2
3
4

status: infeasibleoptimal value infstatus: unboundedoptimal value -inf

注意,对于一个最小化问题:

  • • 如果问题不可行,最优值为 inf
  • • 如果问题无界,最优值为 -inf而对于最大化问题则相反。

其他状态

如果求解器成功但精度低于期望,状态会反映这种“低精度”情形,包括:

  • • optimal_inaccurate
  • • unbounded_inaccurate
  • • infeasible_inaccurate

对于这些情况,变量仍会被更新为相应的解。

若求解器完全失败,CVXPY 会抛出 SolverError 异常。此时应尝试其他求解器(参见“求解器”部分的详细讨论)。

CVXPY 提供以下常量作为状态字符串的别名:

  • • OPTIMAL
  • • INFEASIBLE
  • • UNBOUNDED
  • • OPTIMAL_INACCURATE
  • • INFEASIBLE_INACCURATE
  • • UNBOUNDED_INACCURATE
  • • INFEASIBLE_OR_UNBOUNDED

判断问题是否成功求解,可使用:

1

prob.status == OPTIMAL

INFEASIBLE_OR_UNBOUNDED 状态较罕见,表示求解器只能确定问题要么不可行、要么无界,但无法辨别具体是哪种情况。此时可以通过将目标函数改为常数(例如 cp.Minimize(0))重新求解:

  • • 若新问题仍给出 INFEASIBLE_OR_UNBOUNDED,原问题为不可行;
  • • 若新问题为 OPTIMAL,则原问题为无界。

向量与矩阵

变量可为标量、向量或矩阵,即分别为 0、1、2 维。

1
2
3
4
5
6
7
8
9
10
11

# 标量变量a = cp.Variable()# 向量变量(长度 5)x = cp.Variable(5)# 列向量(维度为 (5, 1))x = cp.Variable((5, 1))# 矩阵变量(维度为 (4, 7))A = cp.Variable((4, 7))

你可以使用任意数值库构造向量与矩阵常量,如 NumPy 的 ndarray 或 SciPy 稀疏矩阵等。

CVXPY 支持下列类型作为常量:

  • • NumPy ndarray
  • • SciPy 稀疏矩阵

示例如下(带向量和矩阵的优化问题):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

# 解一个有界最小二乘问题import cvxpy as cpimport numpy as npm = 10n = 5numpy.random.seed(1)A = np.random.randn(m, n)b = np.random.randn(m)x = cp.Variable(n)objective = cp.Minimize(cp.sum_squares(A @ x - b))constraints = [0 <= x, x <= 1]prob = cp.Problem(objective, constraints)print("Optimal objective value", prob.solve())print("Optimal variable value")print(x.value) # 一个 NumPy 向量

输出:

1
2
3

Optimal objective value 4.14133859146Optimal variable value[ -5.11480673e-21   6.30625742e-21   0.134643668   0.124976681  -4.79039542e-21]


约束条件

如上例所示,你可以用 ==<=>= 构造约束。无论是标量、向量还是矩阵,等式与不等式约束皆逐项作用。例如,0 <= x 与 x <= 1 表示 x 的每个元素都在 0 到 1 之间。

若要表示半正定矩阵约束,请参照“半正定矩阵”部分。

不能使用 < 或 > 构造严格不等式,因为在现实问题中没有意义;也不能链式写约束(如 0 <= x <= 1),Python 解释器不会让 CVXPY 捕获该结构。


参数(Parameters)

参数是常量的符号化表示。通过参数能改变问题中常量的值,而无需重建整个问题。这种机制能显著加速重复求解过程(参阅 Disciplined Parametrized Programming 相关教程)。

定义参数时,可指定其属性(非负、非正、对称等)。参数创建后可被赋值,但其维度及属性必须与初始化时一致。

1
2
3
4
5
6
7
8
9

# 非负标量参数m = cp.Parameter(nonneg=True)# 含未知符号的列向量参数c = cp.Parameter(5)# 含非正元素的矩阵参数G = cp.Parameter((4, 7), nonpos=True)G.value = -np.ones((4, 7))

参数可在创建时赋初值:

1
2
3
4
5

# 两种等效方式rho = cp.Parameter(nonneg=True)rho.value = 2rho = cp.Parameter(nonneg=True, value=2)

一个典型用例是计算 LASSO 问题的正则化折衷曲线:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44

import cvxpy as cpimport numpy as npimport matplotlib.pyplot as pltn = 15m = 10np.random.seed(1)A = np.random.randn(n, m)b = np.random.randn(n)gamma = cp.Parameter(nonneg=True)x = cp.Variable(m)error = cp.sum_squares(A @ x - b)obj = cp.Minimize(error + gamma * cp.norm(x, 1))prob = cp.Problem(obj)sq_penalty = []l1_penalty = []x_values = []gamma_vals = np.logspace(-4, 6)for val in gamma_vals:    gamma.value = val    prob.solve()    sq_penalty.append(error.value)    l1_penalty.append(cp.norm(x, 1).value)    x_values.append(x.value)plt.figure(figsize=(6,10))plt.subplot(211)plt.plot(l1_penalty, sq_penalty)plt.xlabel(r'\|x\|_1', fontsize=16)plt.ylabel(r'\|Ax-b\|^2', fontsize=16)plt.title('LASSO 折衷曲线', fontsize=16)plt.subplot(212)for i in range(m):    plt.plot(gamma_vals, [xi[i] for xi in x_values])plt.xscale('log')plt.xlabel(r'\gamma', fontsize=16)plt.ylabel(r'x_{i}', fontsize=16)plt.title(r'x_i 与 \gamma 的关系', fontsize=16)plt.tight_layout()plt.show()

此外,可使用多进程并行地计算多个参数取值下的解:

1
2
3
4
5
6
7
8
9

from multiprocessing import Pooldef get_x(gamma_value):    gamma.value = gamma_value    result = prob.solve()    return x.valuepool = Pool(processes=1)x_values = pool.map(get_x, gamma_vals)


自定义标签(Custom Labels)

可以为表达式和约束条件设置自定义标签,以便调试和模型解释。通过 set_label() 或 .label 属性赋予标签。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

import cvxpy as cpimport numpy as npweights = cp.Variable(3, name="weights")constraints = [    (weights >= 0).set_label("non_negative_weights"),    (cp.sum(weights) == 1).set_label("budget_constraint"),    (weights <= 0.4).set_label("concentration_limits")]mu = np.array([0.08, 0.10, 0.07])Sigma = np.array([[0.10, 0.02, 0.01],                  [0.02, 0.08, 0.03],                  [0.01, 0.03, 0.09]])expected_return = (mu @ weights).set_label("expected_return")risk = cp.quad_form(weights, Sigma).set_label("risk")objective = cp.Minimize(risk - 0.5 * expected_return)problem = cp.Problem(objective, constraints)print(problem.format_labeled())

输出:

1
2
3
4

minimize risk + -0.5 @ expected_returnsubject to non_negative_weights: 0.0 <= weights           budget_constraint: Sum(weights, None, False) == 1.0           concentration_limits: weights <= 0.4

标签是动态的,可在建模后修改:

1
2

risk.label = "portfolio_risk"print(problem.format_labeled())

输出:

1
2
3
4

minimize portfolio_risk + -0.5 @ expected_returnsubject to non_negative_weights: 0.0 <= weights    budget_constraint: Sum(weights, None, False) == 1.0    concentration_limits: weights <= 0.4


公众号《博優旮旯-BOYOGALA》[12],致力于让大家更专业、更完整和更系统地获取与了解数学(运筹与优化、数值分析)等相关数学知识分享!

🎯公众号ID:boyogala,🌐网址: www.boyogala.us.kg[13],💬微信: boyougala,📧邮箱: boyogala@qq.com[14].

说明文档:公众号《博優旮旯-boyogala》的使用指南,以下罗列代表作可供查阅.

优化求解器 — 代表作优化求解器类型总结线性二次和非线性求解器,Ipopt开源免费的非线性求解器,HiGHS开源免费整数线性求解器,SCIP开源免费的优化求解器,Gurobi商业收费全局优化求解器,CPLEX商业收费整数优化求解器,MOSEK商业收费的优化求解器,BARON商业收费的全局优化求解器,LindoAPI商业收费的全局优化求解器,COPT国产自研的优化求解器

三大数学软件 — 代表作MATLAB工程师的科学计算软件,MATHEMATICA物理的计算软件,MAPLE数学家的数学软件

嵌入式、无人机和机器人 — 代表作OSQP二次规划求解器

线性方程组的求解软件 — 代表作PARDISO并行直接求解器,MUMPS高性能并行求解器,SuitSparse稀疏矩阵软件包,SuperLU非对称直接法求解器

基于MATLAB的优化建模工具 — 代表作CVX免费凸优化建模工具,Yalmip免费的优化建模工具,CasADi开源最优化控制工具

基于Python的优化建模工具 — 代表作CasADi非线性优化和最优控制,Gekko数值优化和动态系统建模,Pyomo面向对象代数建模语言

科学计算软件 — 代表作oneAPI统一的异构编程模型,CUDA人工智能时代的基石,OpenFOAM开源的CFD软件,COMSOL业界多物理场仿真软件

全球优化建模平台 — 代表作AMPL数学规划建模语言,AIMMS快速优化建模工具,GAMS通用代数建模系统,JuMP数学优化建模语言(学习中…)

人类在思考 — 代表作:公众号排版数学公式的经验,200篇论文🆚1个优化求解器,盗版Windows系统🆚破解版LINGO18

数学是第三世界 — 代表作数学研究需要师徒传承吗?函数梯度的可视化

引用链接

[1] 国产学术免费的求解器: https://www.shanshu.ai/copt[2] Installation Guide(安装指南): https://www.cvxpy.org/install/index.html[3] 官方 CVXPY 教程(official tutorial): https://www.cvxpy.org/tutorial/index.html[4] 示例库(example library): https://www.cvxpy.org/examples/index.html[5] API 参考文档(API reference): https://www.cvxpy.org/api_reference/cvxpy.html[6] Discord: https://discord.gg/4urRQeGBCr[7] GitHub Discussions: https://github.com/cvxpy/cvxpy/discussions[8] GitHub Issues: https://github.com/cvxpy/cvxpy/issues[9] 行为准则(code of conduct): https://github.com/cvxpy/cvxpy/blob/master/CODE_OF_CONDUCT.md[10] 贡献指南(contributing guide): https://github.com/cvxpy/cvxpy/blob/master/CONTRIBUTING.md[11] 文档governance document: https://github.com/cvxpy/org/blob/main/governance.md[12] 《博優旮旯-BOYOGALA》: https://www.cardopt.cn/api/images/1_1763724698_ce344a.png[13] www.boyogala.us.kg: http://www.boyogala.us.kg[14] boyogala@qq.com: mailto:boyogala@qq.com

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-02-07 12:13:32 HTTP/2.0 GET : https://f.mffb.com.cn/a/470477.html
  2. 运行时间 : 0.638148s [ 吞吐率:1.57req/s ] 内存消耗:4,948.45kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=3f06a970a3db3f10a1dd2817d7099341
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.001373s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001882s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.004416s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.008290s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001409s ]
  6. SELECT * FROM `set` [ RunTime:0.001732s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001509s ]
  8. SELECT * FROM `article` WHERE `id` = 470477 LIMIT 1 [ RunTime:0.094284s ]
  9. UPDATE `article` SET `lasttime` = 1770437612 WHERE `id` = 470477 [ RunTime:0.084017s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.006181s ]
  11. SELECT * FROM `article` WHERE `id` < 470477 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.009830s ]
  12. SELECT * FROM `article` WHERE `id` > 470477 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.010881s ]
  13. SELECT * FROM `article` WHERE `id` < 470477 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.008713s ]
  14. SELECT * FROM `article` WHERE `id` < 470477 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.002766s ]
  15. SELECT * FROM `article` WHERE `id` < 470477 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.202887s ]
0.641925s