本帖最后由 hkz0318 于 2010-10-25 00:48:07 编辑

解决方案 »

  1.   

    一般的倒计时JS脚本都应该有变量,用于自定义倒计时时间的。这个时间必然是服务器读取数据后进行计算,通过服务器解析之后填充到JS脚本里面的。数据库读取时间数据,结合time()函数,由php等计算出剩余时间,一般就是秒数或者毫秒数。然后以一定的格式输出到页面的JS变量中。这样应该解决问题了。至于页面加载造成的小于10秒的时间,应该是可以容忍的吧。
      

  2.   

    打开页面的第一次用php生成剩余时间给js用。剩下的就js操作吧。
      

  3.   

    第一次php返回时间,然后页面js做倒计时,同时ajax每过一段时间就去请求下服务器时间,页面时间同步更新
      

  4.   

    单纯js是搞不定的
    必须得有与php的交互  js的操作 是不可信滴滴滴
      

  5.   

    嗯,首先感谢各位的的指点
    我的想法大概也是这个样子,js仅做页面的倒计时,不做服务端真正耗时参考
    服务端计时从页面打开开始,页面打开后js每隔一段时间请求一次,用来确认用户还停留在当前页面,并在服务端真正做时长消耗,js返回用户真正剩余时间并修正页面js剩余时间的显示。当js不再请求时,服务认为用户已经关闭此页面并结束剩余时长的消耗。
    但这种思路会有几个问题我想不通:
    1、js每隔多长时间请求一次比较合适,如果网速慢(或服务器慢)导致请求时间过长势必会导致页面显示剩余时间和实际剩余时间产生较大误差。
    2、我判断用户是否关闭或离开当前页面的标准是js不再请求,就如helloyou0所说,js是可以禁用或修改的,如果客户端中断js的请求,服务端即认为用户已关闭页面,实际用户并没关闭。这两个问题能不能解决,这种解决方案可不可行
      

  6.   

    客户端心跳或者Socket来判断用户是否在线。
    心跳发送每隔1分钟或者30秒,但你的网站服务器要承受的起。另外假如别个网速慢的话,铁定悲剧。
      

  7.   

    我判断用户是否关闭或离开当前页面的标准是js不再请求,就如helloyou0所说,js是可以禁用或修改的,如果客户端中断js的请求,服务端即认为用户已关闭页面,实际用户并没关闭// 你的意思是,在脱机状态下也可以使用功能吗,那我不需要禁用或修改js,拔网线就好了...
      

  8.   

    用Ajax实现会比较好一点吧但是如果在线人数多的时候 估计对服务器有影响吧
      

  9.   

    AJAX心跳~发往后台进行处理 切记别全在前台处理 可以欺骗~
      

  10.   

    你要的这个和我之前做过的两个活动很相似!我用了两种不同的方法:
    第一种:由于用户属于局域网的应用,所以人数不多!所以我选择了ajax定时想后台脚本发送请求验证该用户已经过期,过期则自动跳转.第二种:是个类似现在网络上流行的秒杀活动.我是直接在页面加载的时候服务器向client写入当前开始的时间,然后js定时对写入的时间进行计算,提示用户还剩多长时间.到了时间就把对应的控件设置为不可用(操作控件发送ajax请求给服务器).另外服务器端在前台页面的控件操作的时候将在获取到ajax请求的时候对当前时间进行计算,如果已经过期则返回"时间已经到期"的提示,由页面进行呈现给用户.至于前台和服务器的时间同步问题,基本上误差很小,在1,2秒钟!
    希望对你有所帮助!!