浅谈session_onend的调试

2016-01-29 17:57 29 1 收藏

浅谈session_onend的调试,浅谈session_onend的调试

【 tulaoshi.com - ASP 】

   

    session_onend是比较难调试的,这是因为:
    一、没有出错信息提示(这也难怪,是没有地方提示的,根本不知道要将出错提示信息放到什么地方去)。    
    二、大多数情况下,也不能使用session.abandon来手工释放sesion进行调试——你释放了所有的session,那你在session_onend中不要用到session对象吗?所以,只好傻呼呼的等待session超时了。还好,session超时时域可以自己设,调试时设小点,比如2分钟或1分钟的。
    三、如果你只有一台电脑,那就更难调试了,原因不用我说了吧。
    
    下面我给大家说说我在调试session_onend时的一点点经验:

    一、不要怀疑你的session_onend没有执行(其实开始时我也曾经怀疑过,因为总相信自己的session_onedn事件没有错),常听有些人抱怨:“怎么我的session_onend没有执行,session_onstart是好好的”,当然了,session_onstart容易看到嘛。
    如果你不信的话,你将一个标记放到session_onend的第一行。
    sub session_onend
      application("flag1")="session_onend已经执行了"
      …………后面是你的session_onend的内容
    end sub

    然后等session超时后,用apptest.asp?key=flag1(apptest.asp后面附有)查看application("flag1")的值,你肯定能看到“session_onend已经执行了”。
    所以,一旦你的session_onend没有达到你的目的时,应该检讨你的session_onend事件有没有写好——跟asp文件一样,session_onend一旦遇到错误,马上停止执行……

    二、写session_onend事件时一定要仔细,要保证每个字每都不会错,保证不出现语法,不出现逻辑错误。这个只能你的眼睛和思维能帮上你。
    下面是我在调试聊天室的session_onend事件时的方法,供大学参考:

    我在下面的程序中设了几个标记:flag1,flag2,flag3,flag4,flag5

<SCRIPT LANGUAGE="VBScript" RUNAT="Server"
sub Session_onEnd
ip=session("userip")
application("flag1")=ip      ——标记flag1
chatdata=application("chatdata")
onliuser=application("onliuser")
kicklist=application("kicklist")
uleave=false
for i=0 to 50
  if chatdata(i,1)=ip then
    kicklist=replace(kicklist,",'#"&chatdata(i,0)&"'","")
    onliuser=replace(onliuser,",'"&chatdata(i,0)&"'","")
    chatdata(i,0)=""
    chatdata(i,1)=""
    chatdata(i,2)=0
    chatdata(i,3)=""
    chatdata(i,4)=0
    chatdata(i,5)=""
    uleave=true
    application("flag2")="找到同ip的聊客"     ——标记flag2
  end if
next
kicklist=replace(kicklist,",'"&ip&"'","")
application("flag3")="kicklist的值为:"&kicklist  ——标记flag3
if uleave then
  for i=0 to 50
    chatdata(i,4)=(chatdata(i,4) mod 4)+4
  next
  application("flag4")="执行了通知更新名单"   ——标记flag4
end if
application("flag5")="第4标志"                ——标记flag5
application.lock
  application("kicklist")=kicklist
  application("onliuser")=onliuser
  application("chatdata")=chatdata
application.unlock
application("flag6")="执行了application变量更新"   ——标记flag6
end sub
</script

来源:http://www.tulaoshi.com/n/20160129/1503720.html

延伸阅读
标签: PHP
一、session概述 session是什么,刚开始我也不明白,非专业词典翻译为会议,会议期。作个不太恰当的比喻吧 (虽然不恰当,但意义却是一样的),session是你和网站之间的感情。 session在WEB技术中占有非常重要的份量。由于网页是一种无状态的连接程序,因此你无法得知用户的浏览状态。因此我们必须 通过session记录用户的...
标签: PHP
二、php3,4中session的实现 在php3中是没有session这种东东的,但我们又需要,怎么办呢?别急,有很多人替你做了这些,这其中最有名的要算phplib了。你可以去国外下载,可以上国内大部分php站点下载。我们要做的第一件事是让phplib和php3结合在一起使它能工作。为了能实现这方面的功能,我们需要先安装phplib。跟着我来做,...
标签: PHP
三、session应用举例 以下这些例子片断仅供参考,你可以定制也可以不定制session,随你便 (1)用于用户认证 <? session_start(); $dbh = mysql_connect("localhost:3306","xxxx","xxxx"); mysql_select_db("znsoft");//选择数据库 $query="select userid from reguser w...
标签: PHP
转自:http://www1.blog.163.com/article/-Bov--vjkrgi.html 在很多时候,我们需要跟踪浏览者在整个网站的活动,对他们身份进行自动或半自动的识别(也就是平时常说的网站登陆之类的功能),这时候,我们常采用一组变量来追随访客。实现变量追随有很多种方法,比较用得多的是cookie和session。下面我们用时下很流行的PHP为大家...
我们知道,在Oracle数据库中,可以通过kill session的方式来终止一个进程,其基本语法结构为: alter system kill session 'sid,serial#' ; 被kill掉的session,状态会被标记为killed,Oracle会在该用户下一次touch时清除该进程. 我们发现当一个session被kill掉以后,该session的paddr被修改,如果有多个session被...

经验教程

640

收藏

44
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部