我们进行在线调查,以便计算花费的时间。使用javascript和php,我们发现花费的时间不是100%准确。
原始脚本每5秒发送一次服务器请求,并更新数据库中的时间。
我做了一项研究,发现setTimeOut和setInterval都不准确。那么最好的方法是什么?
我将Ping函数替换为另一个计算上一个数据包时间戳和now()之间差异的函数;但它根本不准确。
如果对所述问题有任何其他解决方案,请提供建议。
答案 0 :(得分:2)
为什么不收听文档的'onunload'事件并发送一条消息,以便知道用户何时离开您的页面。考虑一下;当用户开始填写您的服务器时,您会发送一条消息,当他/她离开您的页面时,您会发送另一个消息,并测量这些消息之间的时间,以便总计总时间
答案 1 :(得分:2)
我想大多数setTimeout和setInterval的实现都设置为等待至少你指定的时间。如果您想要准确读取浏览器打开的时间,请使用javascript的日期函数在客户端计算它,然后发送到服务器。
答案 2 :(得分:0)
如果您想每5秒向服务器发送一次请求,您可以在从客户端发送到服务器的请求中发送当前时间(使用new Date().getTime()
)。
保存在数据库中发送第一个请求的时间。这是用户开始调查的时间。
当每个后续数据包到达时,减去发送第一个请求的时间,以获得用户迄今为止在调查中花费的总时间。当用户单击按钮完成调查时,您可以发送最终请求,表明调查已完成。
您可能还希望发送有关文档模糊和焦点事件的请求。这些事件会跟踪用户离开并返回页面而不关闭页面。