开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

查看: 1154|回复: 4
收起左侧

[已解决] HPsock http服务器 内存上涨问题

 关闭 [复制链接]
结帖率:67% (10/15)
发表于 2021-8-20 16:18:52 | 显示全部楼层 |阅读模式   广东省珠海市
5精币
哪位大佬能帮忙看看源码...
用的是 hpsock的中文支持库,
进行了,10万次的请求,内存会上涨到100MB左右
  
窗口程序集名保 留  保 留备 注
窗口程序集_启动窗口   
变量名类 型数组备 注
httpHTTP服务端  
多线程线程池组件  
通讯句柄整数型  
a整数型  
b整数型  
许可整数型  

子程序名返回值类型公开备 注
__启动窗口_创建完毕  
许可 = 创建进入许可证 ()
通讯句柄 = http.创建监听环境 ()
http.设置回调事件 (&请求头完成通知, &请求体报文通知, &完成解析通知, &解析错误通知, &开始解析, &请求行解析完成, &请求头通知, , , , , , , &监听回调事件, &客户进入回调事件, &握手成功回调事件, , , &客户关闭回调事件, &服务关闭回调事件)
http.启动 (通讯句柄, “0.0.0.0”, 12345)
多线程.启动线程池 (8, 16, 0, )
子程序名返回值类型公开备 注
监听回调事件整数型 1创建监听自动回调
参数名类 型参考可空数组备 注
监听句柄整数型
套接字监听句柄整数型
调试输出 (“监听回调事件”)
返回 ( #事件通知_成功 )
子程序名返回值类型公开备 注
客户进入回调事件整数型 2给客户端连接创建一个附加数据的内存空间
参数名类 型参考可空数组备 注
监听句柄整数型
连接ID整数型
客户套接字句柄整数型TCP:客户套接字句柄 UDP:地址结构指针
变量名类 型静态数组备 注
端口整数型 
pExtra整数型 
远程地址文本型 
pBuffer数据指针操作 
' http.取地址信息_远程 (监听句柄, 连接ID, 远程地址, 端口)
' 客户端连接创建一个附加数据的内存空间
pBuffer.new (, )
http.置附加数据 (监听句柄, 连接ID, pBuffer.GetThis ())
pBuffer.Free ()
返回 ( #事件通知_成功 )
子程序名返回值类型公开备 注
握手成功回调事件整数型 3
参数名类 型参考可空数组备 注
监听句柄整数型
连接ID整数型
' 调试输出 (“握手成功回调事件”)
返回 ( #事件通知_成功 )
子程序名返回值类型公开备 注
开始解析整数型 4
参数名类 型参考可空数组备 注
pSender整数型
dwConnID整数型
' LogMsg (“ > [” + GetSenderName (pSender) + “,#” + 到文本 (dwConnID) + “,OnMessageBegin]”)
' 调试输出 (“开始解析”)
返回 ( #事件通知_成功 )
子程序名返回值类型公开备 注
请求行解析完成整数型 5
参数名类 型参考可空数组备 注
pSender整数型
dwConnID整数型
lpszMethod文本型
lpszUrl文本型
' LogMsg (“ > [” + GetSenderName (pSender) + “,#” + 到文本 (dwConnID) + “,OnMessageBegin] ->[” + lpszMethod + “/” + 到文本 (http.取请求行URL域掩码 (pSender, dwConnID)) + “]:” + lpszUrl)
' 调试输出 (“请求行解析完成”)
返回 ( #事件通知_成功 )
子程序名返回值类型公开备 注
解析错误通知整数型 
参数名类 型参考可空数组备 注
pSender整数型
dwConnID整数型
iErrorCode整数型
lpszErrorDesc整数型
' LogMsg (“ > [” + GetSenderName (pSender) + “,#” + 到文本 (dwConnID) + “,OnParseError]”)
' 调试输出 (“解析错误通知”)
b = b + 1
标签2.标题 = 到文本 (b)
返回 ( #事件通知_成功 )
子程序名返回值类型公开备 注
请求头通知整数型 6 运行了 8 次
参数名类 型参考可空数组备 注
pSender整数型
dwConnID整数型
lpszName文本型
lpszValue文本型
' LogMsg (“ > [” + GetSenderName (pSender) + “,#” + 到文本 (dwConnID) + “,OnHeader] ->” + lpszName + “:” + lpszValue)
' 调试输出 (“请求头通知”)
返回 ( #事件通知_成功 )
子程序名返回值类型公开备 注
请求头完成通知整数型 7
参数名类 型参考可空数组备 注
pSender整数型
dwConnID整数型
' GetHeaderSummary (pSender, dwConnID, 真, )
' 调试输出 (“请求头完成通知”)
返回 ( #事件通知_成功 )
子程序名返回值类型公开备 注
请求体报文通知整数型 8重要,这里是获取数据如果为空,不允许下面代码
参数名类 型参考可空数组备 注
pSender整数型
dwConnID整数型
pData整数型
iLength整数型
变量名类 型静态数组备 注
pE整数型 
pBuffer数据指针操作 
' 调试输出 (“请求体报文通知”)
如果真 (http.取附加数据 (pSender, dwConnID, pE))
' 调试输出 (“请求体报文通知获得真”)
如果真 (pE ≠ 0)
pBuffer.Attach (pE)
pBuffer.Cat_Ptr (pData, iLength)  ' 数据累加


' 调试输出 (“请求体报文通知获得假”)
返回 ( #事件通知_成功 )
子程序名返回值类型公开备 注
完成解析通知整数型 9调用多任务
参数名类 型参考可空数组备 注
pSender整数型
dwConnID整数型
变量名类 型静态数组备 注
px整数型 
' 调试输出 (“完成解析通知”)
px = 多线程.创建任务对象 (&任务处理, pSender, dwConnID, , , , , )
多线程.提交Socket任务 (px, )
返回 ( #事件通知_成功 )
子程序名返回值类型公开备 注
任务处理  
参数名类 型参考可空数组备 注
rwzz整数型
变量名类 型静态数组备 注
任务线程池任务转换
数据指针整数型 
pBuffer数据指针操作 
bin字节集 
发起对象整数型 
连接id整数型 
' 调试输出 (“这是多线程处理”)
任务.Attach (rwzz)
发起对象 = 任务.GetSender ()
连接id = 任务.GetConnID ()
http.取附加数据 (发起对象, 连接id, 数据指针)
pBuffer.Attach (数据指针)
bin = 指针到字节集 (pBuffer.Ptr (), pBuffer.Size ())
pBuffer.Free ()
http.回复请求 (通讯句柄, 连接id, #HTTP状态_200, , , bin)
http.断开连接 (通讯句柄, 连接id, )
进入许可区 (许可)
a = a + 1
标签1.标题 = 到文本 (a)
进入许可区 (许可)
子程序名返回值类型公开备 注
客户关闭回调事件整数型 10
参数名类 型参考可空数组备 注
监听句柄整数型
连接ID整数型
操作类型整数型
错误码整数型
' 调试输出 (“客户关闭回调事件”)
返回 ( #事件通知_成功 )
子程序名返回值类型公开备 注
服务关闭回调事件整数型 服务关闭才触发
参数名类 型参考可空数组备 注
监听句柄整数型
' 调试输出 (“服务关闭回调事件”)
返回 ( #事件通知_成功 )
子程序名返回值类型公开备 注
__启动窗口_将被销毁  
http.停止 (通讯句柄)
http.销毁监听环境 (通讯句柄, )


i支持库列表   支持库注释   
HPSocket_E(未知支持库)
EThread多线程支持库
spec特殊功能支持库

http api.e

9.34 KB, 下载次数: 8

最佳答案

查看完整内容

任务处理 这个子程序,在有可能出现问题的地方 提前加 返回(),保证每次都完整结束线程

回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳

结帖率:99% (71/72)
发表于 2021-8-20 16:18:53 | 显示全部楼层   广东省深圳市
任务处理 这个子程序,在有可能出现问题的地方 提前加 返回(),保证每次都完整结束线程

评分

参与人数 1荣誉 +1 收起 理由
笨潴 + 1 热心帮助他人,荣誉+1,希望继续努力(*^__^*) 嘻嘻!

查看全部评分

回复

使用道具 举报

结帖率:67% (10/15)
 楼主| 发表于 2021-8-20 16:58:07 | 显示全部楼层   广东省珠海市
影知 发表于 2021-8-20 16:28
任务处理 这个子程序,在有可能出现问题的地方 提前加 返回(),保证每次都完整结束线程 ...

试了一下 还是一样  转换线程池任务  的没有释放的  不知道是不是这个问题
回复

使用道具 举报

结帖率:99% (71/72)
发表于 2021-8-20 16:59:32 | 显示全部楼层   广东省深圳市
美丽星空 发表于 2021-8-20 16:58
试了一下 还是一样  转换线程池任务  的没有释放的  不知道是不是这个问题 ...

一个个试试吧,易语言没有像JAVA一样的自动处理机制。。
回复

使用道具 举报

结帖率:67% (10/15)
 楼主| 发表于 2021-8-20 17:19:08 | 显示全部楼层   广东省珠海市
影知 发表于 2021-8-20 16:59
一个个试试吧,易语言没有像JAVA一样的自动处理机制。。

找到问题了  ,,,是断开连接引起的,,,删除命令后正常了...
回复

使用道具 举报

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

本版积分规则 致发广告者

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

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

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