|
窗口程序集名 | 保 留 | 保 留 | 备 注 | mysql链接程序集 | | | | 变量名 | 类 型 | 数组 | 备 注 | 连接池监控线程 | 整数型 | | 连接池启动 | 逻辑型 | | 获取线程锁 | 整数型 | |
连接池启动 = 假 强制结束线程 (连接池监控线程 )删除进入许可证 (获取线程锁 )计次循环首 (取数组成员数 (连接池 ), b )如果真 (连接池 [b ].连接id ≠ 0 )关闭MySql (连接池 [b ].连接id )连接池 [b ].空闲状态 = 假 计次循环尾 ()日志 (“连接池已销毁!”)返回 ()变量名 | 类 型 | 静态 | 数组 | 备 注 | c | 整数型 | | | 已连接 | 整数型 | | | 需连接 | 整数型 | | | 临时id | 整数型 | | | 重定义数组 (连接池, 假, 最大连接池数量 )需连接 = 取整 (最大连接池数量 ÷ 2 )循环判断首 ()临时id = 连接MySql (数据库IP, 数据库账号, 数据库密码, 数据库名, 数据库端口 )如果 (临时id ≠ 0 )已连接 = 已连接 + 1 连接池 [已连接 ].连接id = 临时id 连接池 [已连接 ].空闲状态 = 真 连接池 [已连接 ].最后调用时间 = 取现行时间 ()连接池 [已连接 ].是否临时连接 = 假 日志 (“连接池[” + 到文本 (已连接 ) + “]创建成功,连接ID:” + 到文本 (临时id )) 日志 (“连接池创建失败,正在重试...”)循环判断尾 (已连接 < 需连接 )日志 (“连接池已创建完成,当前连接池连接数:” + 到文本 (已连接 )) 获取线程锁 = 创建进入许可证 ()连接池启动 = 真 启动线程 (&连接池监控, 30, 连接池监控线程 )返回 (真)变量名 | 类 型 | 静态 | 数组 | 备 注 | 等待期 | 整数型 | | | n | 整数型 | | | 活跃间隔 | 整数型 | | | 判断循环首 (连接池启动 )程序_延时 (60000, )等待期 = 等待期 + 1 如果真 (等待期 ≥ 检查间隔 )等待期 = 0 计次循环首 (取数组成员数 (连接池 ), n )如果真 (连接池 [n ].空闲状态 = 真)活跃间隔 = 取时间间隔 (取现行时间 (), 连接池 [n ].最后调用时间, #分钟 )如果真 (活跃间隔 ≥ 120 )启动线程 (&活跃连接, n, )计次循环尾 ()判断循环尾 ()返回 ()执行SQL语句 (连接池 [连接序号 ].连接id, “SELECT 1”)连接池 [连接序号 ].最后调用时间 = 取现行时间 ()返回 ()变量名 | 类 型 | 静态 | 数组 | 备 注 | n | 整数型 | | | 连接句柄 | 整数型 | | | 临时id | 整数型 | | | C | 整数型 | | | 进入许可区 (获取线程锁 )连接句柄 = 0 循环判断首 ()计次循环首 (取数组成员数 (连接池 ), n )如果真 (连接池 [n ].空闲状态 = 真)连接池 [n ].空闲状态 = 假 连接句柄 = 连接池 [n ].连接id 跳出循环 ()计次循环尾 ()如果真 (连接句柄 = 0 )计次循环首 (取数组成员数 (连接池 ), C )如果真 (连接池 [C ].连接id = 0 )循环判断首 ()临时id = 连接MySql (数据库IP, 数据库账号, 数据库密码, 数据库名, 数据库端口 )循环判断尾 (临时id ≠ 0 )连接池 [C ].连接id = 临时id 连接池 [C ].空闲状态 = 假 连接池 [C ].是否临时连接 = 真 连接池 [C ].最后调用时间 = 取现行时间 ()计次循环尾 ()连接句柄 = 临时id 日志 (“由于连接池连接数不足,已临时创建连接线程,连接id:” + 到文本 (连接句柄 )) 循环判断尾 (连接句柄 = 0 )退出许可区 (获取线程锁 )返回 (连接句柄 )计次循环首 (取数组成员数 (连接池 ), C )如果真 (连接池 [C ].连接id = 连接句柄 )如果真 (连接池 [C ].是否临时连接 = 真)关闭MySql (连接句柄 )日志 (“临时mysql连接已被关闭,连接ID:” + 到文本 (连接句柄 )) 连接池 [C ].连接id = 真 连接池 [C ].是否临时连接 = 假 连接池 [C].空闲状态 = 真计次循环尾 ()返回 ()
简易版的,适合新手学习,也请大神提出一些建议和优化的地方!
|
|