使用ADODB.Stream组件频繁引起session丢失

shuangren 2015-02-15 06:37:08
以前有个网站是gb2312编码,使用FSO组件保存缓存文件
最近把这个网站改为utf-8编码,因为FSO组件不支持utf-8,所以改为使用ADODB.Stream组件保存缓存文件
现在问题出现了,只要批量生成缓存文件的,就频繁丢失session
虽然该网站所在服务器配置不高,是vps,但网站访问量更低,每天才100IP左右,不存在在线用户太多的可能
我尝试着修改程序池的各种设置方式,均没解决问题
到最后我把注意力集中在ADODB.Stream组件上,我发现只要不运行
objStream.SaveToFile myserver.MapPath(path), 2
这一句,就不会出现session丢失的现象,而只要频繁运行它,很快session就丢了

session丢失是个老话题,这几天我查了大量资料,往往最后只有一句:无法解决,或者使用cookies
但问题是我遇到的这个问题明显不是session的原因,原因出在ADODB.Stream组件上
请大家帮帮我,说不定这次能解决这个老大难问题
我使用的是dll
-------------------------dll内容如下------------------------------

Function wrf(ByVal path, ByVal content, ByVal CharSet)
Dim objStream
Set objStream = myserver.CreateObject("ADODB.Stream")

'objStream.open
'objStream.CharSet = CharSet
'objStream.Position = objStream.Size
'objStream.WriteText = content
'objStream.SaveToFile myserver.MapPath(path), 2
'objStream.Close
'Set objStream = Nothing

With objStream
.Type = 2
.Mode = 3
.CharSet = "utf-8"
.Open
.WriteText content
.SaveToFile myserver.MapPath(path), 2
End With

wrf = True

If Err Then
wrf = False
End If
End Function


-------------------------网页内容如下,test.wr是组件名称------------------------------

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%option explicit%>
<% Response.CodePage=65001%>
<% Response.Charset="UTF-8" %>
<%
Dim test, filepath, data
set test = server.createobject("test.wr")
data = "中华人民共和国"
dim i
for i = 1 to 10
filepath = "\" & i & ".asp"
Call test.wrf(filepath, data, "utf-8")
next
set test = nothing
%>

使用for循环是模拟批量生成缓存文件
...全文
275 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
邱嵩松 2015-02-19
  • 打赏
  • 举报
回复
用txt文档来储存你的缓存试试
hookee 2015-02-17
  • 打赏
  • 举报
回复
批量的写文件的操作放在asp里处理是比较耗资源的,可以采用异步方式, 用消息队列 加 服务的方式去做。
孟子E章 2015-02-17
  • 打赏
  • 举报
回复
可能的原因: 1,内存不足,Session是存储在内存中的。 2,文件的变化导致实时杀毒软件运行病毒扫描程序导致,可以关闭实时监控程序
三楼の郎 2015-02-17
  • 打赏
  • 举报
回复
别用.asp做文件扩展名试试
shuangren 2015-02-15
  • 打赏
  • 举报
回复
这个问题大概是多文件高并发写入IO过大导致的session丢失 我在写文件程序中加了一段for循环session就不丢了 for j = 1 to 500000 next 但是这不是解决之道啊
shuangren 2015-02-15
  • 打赏
  • 举报
回复
刚才试着改用FSO组件生成缓存文件,仍然会丢失session
内容概要:本文档为一份《计算机程序设计语言(C++)》课程的实验报告,涵盖了从基础语法到面向对象编程的多个实验内容。实验内容包括基础语法练习(如银行存款计算、数值比较、科学计算)、控制结构(分支与循环,如闰年判断、素数判定、Kaprekar黑洞数)、数组操作(一维与二维数组的排序、查找、极值计算、杨辉三角)、函数定义与应用(递归、参数传递、函数重载)以及面向对象编程(类与对象的设计、继承、多态性、文件操作)。文档详细展示了每个实验的任务描述、具体C++代码实现、测试结果及实验分析,体现了从简单到复杂、逐步深入的学习路径。; 适合人群:具备C++基础语法知识,正在学习或巩固程序设计课程的在校大学生及初级编程学习者。; 使用场景及目标:①作为C++课程的配套实验指导材料,帮助学生通过实践掌握编程基础知识和核心算法;②用于自学练习,提升对循环、数组、函数和面向对象等核心概念的理解与编码能力。; 阅读建议:学习者应结合文档中的代码实例,动手在编程环境中逐一实现并调试,重点关注代码逻辑、边界条件处理和算法效率,通过对比预期输出与实际输出加深对知识点的掌握。

28,403

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧