-
Notifications
You must be signed in to change notification settings - Fork 18
helpManual dbLink
#读取运行连接信息(key为null) key : 固定null#创建连接池(pool为数组) key : 连接池名称 pool : 连接参数, 若key已创建过, 便不起作用, 与_of.db 配置结构相同
#读取连接池(pool为null) key : 连接池名称
#查询事务层次(pool为"level"), 每开启事务会加一, 完结事务会减一 key : 连接池名称 pool : 固定"level"
#查询事务最终提交状态(pool为"state"), 当SQL执行失败, 状态自动改false key : 连接池名称 pool : 固定"state" val : 默认null=读取状态, false=强制最终回滚
#查询连接信息(pool为"info") key : 连接池名称 pool : 固定"info"
#检查连接是否正常(pool为"ping") key : 连接池名称 pool : 固定"ping" val : 默认null=未连接返回false, true=初始化连接
#重命名指定连接池(pool为"rename") key : 连接池名称 pool : 固定"rename" val : 新连接池名, 若新名已存在, 则会替换
#克隆连接池(pool为"clone") key : 连接池名称 pool : 固定"clone" val : 新连接池名, 若名称已存在, 会将原连接改名唯一值
#关闭并删除指定连接池(pool为"clean") key : 连接池名称 pool : 固定"clean" val : 清理方式, 默认null=销毁连接池, 1=仅关闭连接
#读取运行连接信息(key为null时) { 连接名称 : { "level" : 嵌套的层次, 数据库未连接为 0 "state" : 嵌套未回滚, 数据库未连接为 null "tzId" : 时区标识符, 数据库未连接为 '' }, ... }#创建连接池(pool为数组) $instList.连接池名.pool 结构
#读取连接池(pool为null) key有效返回$instList.连接池名.pool 结构, 否则报错
#查询事务层次(pool为"level") 不在事务中返回0, 一层事务返回1, ...
#查询事务最终提交状态(pool为"state") 不在事务中null, 最终提交事务true, 反之false
#查询连接信息(pool为"info") 数据库未连接为 null, 已连接返回 key为null 结构
#检查连接是否正常(pool为"ping") 连接正常返回true, 反之false
#克隆连接池(pool为"clone") 若克隆名($val)已存在, 返回原连接改名的唯一值, 否则为null
-
sqlstring一条SQL语句keystring指定 框架配置['db'] 中的键或者 of_db::pool 设置的键
<?php /** 描述 : 执行sql语句,根据不同语句返回不同结果 sql : 字符串 = 执行传入的sql null = 开启事务, 支持嵌套事务 true = 提交事务, false = 回滚事务, 若子事务回滚,则父事务也回滚,而非Savepoint方式 key : 连接池区分符, 默认=default 返回 : sql为字符串时 : 若SQL执行失败, 则所在的事务最终会回滚 存储类,返回三维数组 CALL 查询类,返回二维数组 SELECT 插入类,返回插入ID INSERT 删改类,返回影响行数 UPDATE sql为其它时 : 成功返回 true, 失败返回 false / of_db::sql('SELECT 1 a'); //使用默认连接池查询SQL of_db::sql('SELECT 1 a', 'test'); //使用test连接池查询SQL of_db::sql('/call/SELECT 1 a;SELECT 2 b'); //使用CALL模式,返回三维数组
/* 错误跟踪(errorTrace)配置结构 : 数字=记录所有加锁SQL的前n条, 数组=[ //默认n=0关闭, n>0记录前n条加锁SQL, n<0不记录SQL 0, //正则匹配加锁SQL, 针对性跟踪表有利于提升系统性能 '@.@' ] /
/ 锁超时被阻列表结构错误日志 : { "requestId" : 请求被阻的连接ID "lockInfo" : 阻塞信息结构 { 被阻时间@阻塞ID : { "rWait" : 被阻ID等待时间 "bInfo" : 递归阻塞, 同阻塞结构 }, ... }, "lockSqls" : 阻塞ID执行SQL { 阻塞ID : 加锁的SQL清单, 最大数量由errorTrace配置控制 [ 执行时间 > 执行SQL, ... ] }, "lockTrace" : 阻塞逻辑跟踪 { 阻塞ID : 代码执行逻辑, ... } } / 以下日志说明 : 1. 连接"114"在"2020-09-05 13:37:21"被连接"112"阻塞了"9"秒 2. 连接"112"在"2020-09-05 13:37:10"被连接"110"阻塞了"8"秒 3. 连接"112"在"2020-09-05 13:37:20"被连接"111"阻塞了"10"秒 Array( [requestId] => 114 [lockInfo] => Array( [2020-09-05 13:37:21@112] => Array( [rWait] => 9 [bInfo] => Array( [2020-09-05 13:37:10@110] => Array( [rWait] => 8 ) [2020-09-05 13:37:20@111] => Array( [rWait] => 10 ) ) ) ) )
/* 死锁冲突列表结构错误日志 : { "requestId" : 当前回滚连接ID "lockSqls" : 冲突ID执行SQL { 冲突ID : 加锁的SQL清单, 最大数量由errorTrace配置控制 [ 执行时间 > 执行SQL, ... ] }, "lockTrace" : 冲突逻辑跟踪 { 冲突ID : 代码执行逻辑, ... }, "lockLogs" : 死锁日志文本 } */
- 是通过不同方式连接不同数据的方案
- 对接文件存储在 OF_DIR . '/accy/db' 下
- 所有对接文件继承 of_db 类
- 对接文件可以调用 $this->params 获取连接参数
- 对接文件要实现以下方法
手册地址 http://phpof.net/
- 入门指引
-
疑难解答
- 部署时会遇到的那些常见问题
简单却容易忽视 - 框架内置有哪些管理界面
生产模式进入界面需用 __OF_DEBUG__ - 如何定制不同的架构模式
通过配置入口文件中调度方法的参数即可 - 如何面向命名空间开发
of_xx 类可以按照命名空间方式调用 - 如何设置不同的部署模式
通过_of.debug设置 开发,测试,生产 模式 - 为什么控制层类文件要返回true
这是防止非法访问的方法之一 - 为什么传到视图层的变量会被编码
这是因为 XSS 安全防范的原因 - 为什么框架没有SQL构造器
因常规方案牺牲了性能又未很好解决问题 - 如何快速开发用户及权限管理功能
单点登录(SSO)模块因此而存在 - 怎么在系统的基础上扩展底层功能
三点: 扩展开发, 预先加载, 底层钩子 - 怎么使用 Composer 依赖管理工具
框架已集成, 默认关闭状态
- 部署时会遇到的那些常见问题
- 组件使用
- 集成插件
- 扩展开发
- 开发手册