开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

查看: 4856|回复: 52
收起左侧

[求助] Mysql在线程中链接操作完成后句柄无限增加

[复制链接]

结帖率:58% (15/26)
发表于 2021-11-27 14:33:39 | 显示全部楼层 |阅读模式   河北省沧州市
Mysql在线程中链接操作完成后句柄无限增加
1连接MySql(),无论链接是否成功,句柄数都会增加一个;
2.链接成功后正常断开sql了,没有链接成功的没有进行断开;
3.链接成功后无论是否增删改查或者不操作都会出现这个问题;
4.链接失败也会出现这个问题;
5.这个问题只有在线程内会出现,非线程不会增加;

保留线程句柄,手动使用  线程_销毁()来销毁也无用;


想知道原因是什么,怎么才能解决,是否是易语言版本和系统的问题;
系统windows10专业版最新版-易语言是5.9







补充内容 (2021-11-27 14:57):
我想知道的是在线程中如何避免句柄数无限增值的问题

补充内容 (2021-11-27 15:28):
线程已经结束了,是句柄增加了一个,任务管理器里面的句柄

我测试了执行10万次操作,句柄数叠加到了8万多,难道这个句柄无所谓吗,不影响还是啥

补充内容 (2021-11-27 16:51):
句柄数查看方法:调试输出 (“句柄数:”, 进程_取句柄数 (进程_取自进程ID ()))

补充内容 (2021-11-27 18:08):
此问题使用PHP中间件解决,我想知道不用线程池和中间件的解决方法

补充内容 (2021-12-1 08:36):
建立自己的三观,不要什么都无条件相信,圣人也有犯错的时候,有问题要学会找问题,而不是自我怀疑,自我否定;不要去强行解释、避开问题,才会进步;

补充内容 (2021-12-3 11:54):
个人认为是Mysql支持库本身的问题

评分

参与人数 1好评 +1 收起 理由
sinewtec + 1 0也调用断开连接 测试没问题

查看全部评分

结帖率:58% (15/26)

签到天数: 22 天

 楼主| 发表于 2021-11-27 14:42:32 | 显示全部楼层   河北省沧州市
为了方便测试,只放链接失败的代码吧,链接成功也是一样的,只要在线程内链接就会增加句柄而且不会消失
GIF1.gif

  
子程序名返回值类型公开备 注
_按钮1_被单击  
启动线程 (&子程序1, , )
子程序名返回值类型公开备 注
子程序1  
变量名类 型静态数组备 注
SQL句柄整数型 
SQL句柄 = 连接MySql (“127.0.0.1”, “123”, “456”, “789”, 到整数 ( #浏览量数据库端口 ))
调试输出 (SQL句柄)


i支持库列表   支持库注释   
EThread多线程支持库
mysqlMySql支持库
spec特殊功能支持库

补充内容 (2021-11-27 15:16):
如果将:“_按钮1_被单击”下面启动线程 (&子程序1, , )换成:子程序1()  就不会有问题

补充内容 (2021-11-27 16:33):
windows7环境下测试问题依然存在,编译后也有
回复 支持 反对

使用道具 举报

结帖率:58% (15/26)

签到天数: 22 天

 楼主| 发表于 2021-11-27 14:56:07 | 显示全部楼层   河北省沧州市
sinewtec 发表于 2021-11-27 14:53
mysql池 先连接一定数量 调用句柄就好 最后一起销毁!

我想知道的是在线程中如何避免句柄数无限增值的问题
回复 支持 反对

使用道具 举报

结帖率:58% (15/26)

签到天数: 22 天

 楼主| 发表于 2021-11-27 16:46:22 | 显示全部楼层   河北省沧州市
sinewtec 发表于 2021-11-27 16:09
你确定你泄露句柄的 是MYSQL库的 还是线程的
  
窗口程序集名保 留  保 留备 注
窗口程序集_启动窗口   
变量名类 型数组备 注
线程句柄整数型  

子程序名返回值类型公开备 注
_按钮1_被单击  
启动线程 (&子程序1, , )
子程序名返回值类型公开备 注
子程序1  
变量名类 型静态数组备 注
SQL句柄整数型 
SQL句柄 = 连接MySql (“127.0.0.1”, “123”, “456”, “789”, 66666)
断开MySql (SQL句柄)
调试输出 (“线程执行完成”, 进程_取句柄数 (进程_取自进程ID ()))


i支持库列表   支持库注释   
EThread多线程支持库
mysqlMySql支持库
spec特殊功能支持库



执行结果:


* “线程执行完成” | 398
* “线程执行完成” | 399
* “线程执行完成” | 400
* “线程执行完成” | 401
* “线程执行完成” | 402
* “线程执行完成” | 403
* “线程执行完成” | 404
* “线程执行完成” | 405
* “线程执行完成” | 408
* “线程执行完成” | 409
* “线程执行完成” | 410
* “线程执行完成” | 411
* “线程执行完成” | 412
* “线程执行完成” | 413
* “线程执行完成” | 415
* “线程执行完成” | 416
* “线程执行完成” | 417
* “线程执行完成” | 418
* “线程执行完成” | 419
* “线程执行完成” | 420
* “线程执行完成” | 421

回复 支持 反对

使用道具 举报

结帖率:58% (15/26)

签到天数: 22 天

 楼主| 发表于 2021-11-27 16:49:33 | 显示全部楼层   河北省沧州市
sinewtec 发表于 2021-11-27 16:41
.版本 2
.支持库 EThread
.支持库 mysql



测试代码:

  
窗口程序集名保 留  保 留备 注
窗口程序集_启动窗口   
子程序名返回值类型公开备 注
_按钮1_被单击  
变量名类 型静态数组备 注
cc整数型 
启动线程 (&子程序1, , cc)
关闭线程句柄 (cc)
调试输出 (“测试句柄数:”, 进程_取句柄数 (进程_取自进程ID ()))
子程序名返回值类型公开备 注
子程序1  
变量名类 型静态数组备 注
SQL句柄整数型 
SQL句柄 = 连接MySql (“127.0.0.1”, “123”, “456”, “789”, 3306)
断开MySql (SQL句柄)


i支持库列表   支持库注释   
EThread多线程支持库
spec特殊功能支持库
mysqlMySql支持库


测试结果:
* “测试句柄数:” | 396
* “测试句柄数:” | 397
* “测试句柄数:” | 401
* “测试句柄数:” | 402
* “测试句柄数:” | 403
* “测试句柄数:” | 404
* “测试句柄数:” | 405
* “测试句柄数:” | 409
* “测试句柄数:” | 413
* “测试句柄数:” | 417
* “测试句柄数:” | 418
* “测试句柄数:” | 422
* “测试句柄数:” | 426
* “测试句柄数:” | 430
* “测试句柄数:” | 434
* “测试句柄数:” | 435
* “测试句柄数:” | 439
* “测试句柄数:” | 440
* “测试句柄数:” | 444
* “测试句柄数:” | 445
* “测试句柄数:” | 446
* “测试句柄数:” | 447
* “测试句柄数:” | 451
* “测试句柄数:” | 452
* “测试句柄数:” | 453
* “测试句柄数:” | 454
* “测试句柄数:” | 455

回复 支持 反对

使用道具 举报

结帖率:100% (18/18)

签到天数: 23 天

发表于 2021-11-27 19:40:33 | 显示全部楼层   福建省泉州市
xiaohui49816 发表于 2021-11-27 18:53
我用中间件,我是想知道原因,不是避开原因

就像我那个双线程乌龙
执着于寻找答案才会进步

评分

参与人数 1好评 +1 精币 +2 收起 理由
超级萌新 + 1 + 2 共同努力,共同进步

查看全部评分

回复 支持 反对

使用道具 举报

结帖率:99% (141/143)

签到天数: 18 天

发表于 2021-11-27 14:46:18 | 显示全部楼层   江苏省苏州市
为什么要一直去连接呢?只连接一次不就行了
回复 支持 反对

使用道具 举报

结帖率:58% (15/26)

签到天数: 22 天

 楼主| 发表于 2021-11-27 14:51:03 | 显示全部楼层   河北省沧州市
原子 发表于 2021-11-27 14:46
为什么要一直去连接呢?只连接一次不就行了

因为线程数量大多线程用一个会出问题,而且慢
回复 支持 反对

使用道具 举报

签到天数: 20 天

发表于 2021-11-27 14:53:33 | 显示全部楼层   广东省广州市
mysql池 先连接一定数量 调用句柄就好 最后一起销毁!
回复 支持 反对

使用道具 举报

结帖率:58% (15/26)

签到天数: 22 天

 楼主| 发表于 2021-11-27 14:56:35 | 显示全部楼层   河北省沧州市
@大司命 大佬有啥方法吗
回复 支持 反对

使用道具 举报

结帖率:58% (15/26)

签到天数: 22 天

 楼主| 发表于 2021-11-27 14:57:57 | 显示全部楼层   河北省沧州市
GIF1.gif
回复 支持 反对

使用道具 举报

结帖率:58% (15/26)

签到天数: 22 天

 楼主| 发表于 2021-11-27 15:00:59 | 显示全部楼层   河北省沧州市
回复 支持 反对

使用道具 举报

结帖率:95% (56/59)

签到天数: 24 天

发表于 2021-11-27 15:09:47 | 显示全部楼层   福建省福州市
xiaohui49816 发表于 2021-11-27 15:00
@初夏喔 @大司命 @番茄吧 @nikezhi @AnyPopup @七彩色工作室 @zuoshoudidi @寒潮 @影知 @铃儿响叮当

大佬 ...

用线程池肯定是最好的。但是你上面说想知道怎么解决这个问题,那个链接失败你怎么判断出来句柄增加了?你应该获取不到句柄,如果能获取到句柄你就可以断开了
回复 支持 反对

使用道具 举报

  高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则 致发广告者

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

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

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