开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

楼主: jcos
收起左侧

[易语言模块源码] ✅NX线程池,MySql连接池,免费开源码简单超实用稳定 带例程

  [复制链接]
结帖率:100% (11/11)
 楼主| 发表于 2024-7-24 12:47:43 | 显示全部楼层   广东省茂名市
1425113841 发表于 2024-7-24 12:30
1.取出连接存在并发问题
2.SQL语句参数拼装没有做参数转义, 存在SQL注入漏洞.
3.连接可以惰性, 没必要饿汉, ...


厉害!一针见血!
有空帮我优化下呗,就第二种方式。
第一方式是以旧版本的。

万分感谢!
回复 支持 反对

使用道具 举报

结帖率:95% (42/44)

签到天数: 16 天

发表于 2024-7-24 12:30:53 | 显示全部楼层   广东省汕头市
本帖最后由 1425113841 于 2024-7-24 12:40 编辑

1.取出连接存在并发问题
2.SQL语句参数拼装没有做参数转义, 存在SQL注入漏洞.
3.连接可以惰性, 没必要饿汉, 无需上来就把池中所有连接给连满, 而应该是在每次执行时, 检查池是否有空闲, 没有空闲就检查是否已满, 没满再创建连接.
4.当发生错误时, 应该提供获取错误方式, 将"取错误文本()"的具体报告向上传递, 以便使用者查看具体错误.
5.执行SQL语句应该是要可以并发执行, 无需增加临界许可, 这样反而退化了池的概念, 跟没池一样
回复 支持 反对

使用道具 举报

结帖率:95% (42/44)

签到天数: 16 天

发表于 2024-7-24 11:57:24 | 显示全部楼层   广东省汕头市

回帖奖励 +2 枚 精币

简单看看
回复 支持 反对

使用道具 举报

签到天数: 16 天

发表于 2024-7-24 11:48:11 | 显示全部楼层   四川省成都市

回帖奖励 +2 枚 精币

回复 支持 反对

使用道具 举报

结帖率:33% (1/3)

签到天数: 4 天

发表于 2024-7-24 11:46:12 | 显示全部楼层   河南省郑州市
看下。。。。。。。。。。。。。。。。。。。。。。。
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)

签到天数: 6 天

发表于 2024-7-24 11:44:19 | 显示全部楼层   黑龙江省哈尔滨市
NX线程池,MySql连接池,免费开源码简单超实用稳定 带例程
回复 支持 反对

使用道具 举报

结帖率:60% (15/25)

签到天数: 15 天

发表于 2024-7-24 11:38:49 | 显示全部楼层   江苏省苏州市

回帖奖励 +2 枚 精币

试试看看效果好不好
回复 支持 反对

使用道具 举报

结帖率:100% (11/11)

签到天数: 15 天

 楼主| 发表于 2024-7-24 11:05:50 | 显示全部楼层   广东省茂名市
本帖最后由 jcos 于 2024-7-24 11:56 编辑

保持连接,之前版本是每一个句柄都连接一下,保证所有句柄都在线的(发现有时卡连接),后面改为了单个句柄保持。
其实不用开这么多连接的,我一般开两条就很足用了。(其实我自己也没用到 保持连接 ,毕竟断开会重连
如果长时间不用,会断开,再次使用时会自动连接的,可能在重连时会卡1下,毕竟重新连接要点时间。
如果实在想要把所有句柄都保持的话,稍修改一下就行。
或者修改一下mysql配置文件,把 wait_timeout 值调大一点就行
代码如下
  
子程序名返回值类型公开备 注
保持连接逻辑型 mysql心跳,勿间隔大于 wait_timeout 的值,如果不使用此命令,其实在使用过程中断开了会自动连接的,只是会卡几秒进程
参数名类 型参考可空数组备 注
等待时间整数型(单位:秒)可空,连接数满时,等待多久秒后再取句柄
变量名类 型静态数组备 注
句柄整数型 
如果真 (类_最大连接 > 0)
' ' 每一个句柄都取出来连接一次,其实不用这个也行,断开的连接会自动重连,最好是修改一下mysql配置文件wait_timeout值调大一点
计次循环首 (类_最大连接, )
如果真 (取出句柄 (句柄, 等待时间))  ' ’取不出句柄时,可能连接池全部都在使用中,可适当增加连接数或等待时间
进入许可区 (类_许可证)
执行SQL语句 (句柄, “SELECT 1”)  ' ‘ 心跳
释放记录集 (取记录集 (句柄))
归还句柄 (句柄)
退出许可区 (类_许可证)
处理事件 ()
计次循环尾 ()
返回 ()
返回 ()


i支持库列表   支持库注释   
EThread多线程支持库
mysqlMySql支持库


就是循环取出句柄和执行一下语句了,自行修改吧,我就不改了,毕竟改一次贴子又要审核一次。。。




点评

心跳就不需要了, 取出连接的时候应该测试连接能不能用, 如果连接不能用重新连接. 心跳浪费计算机资源   广东省汕头市  发表于 2024-7-24 20:43
回复 支持 反对

使用道具 举报

结帖率:94% (33/35)

签到天数: 12 天

发表于 2024-7-24 11:03:17 | 显示全部楼层   江苏省徐州市

回帖奖励 +2 枚 精币

bucuo
回复 支持 反对

使用道具 举报

发表于 2024-7-24 10:56:12 | 显示全部楼层   浙江省宁波市

回帖奖励 +2 枚 精币

谢谢楼主分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表