Session 离开后保存用户会话浏览历史记录(特定超时)
我正在寻找一种方法,可以方便地保存访问过我的网站的用户在离开该网站后的浏览历史记录。在保存此文件时,我希望将在用户会话期间访问的页面链接在一起。这样我可以得到不同页面之间的相关性 我希望在会话结束时保存数据的原因是性能。我不想在每次页面加载时都在表中写入数据(可能会有很重的索引)的开销。另外,在会话结束时(或离开站点后)保存也有一个优点,即搜索引擎爬行器(没有状态/会话)可以很容易地被过滤掉(它们在会话历史记录中的页面总是不超过一个) 旁注:我的网站使用PHP5.3中的Yii框架 我想到了几个解决我问题的方法:Session 离开后保存用户会话浏览历史记录(特定超时),session,asynchronous,yii,php-5.3,browser-history,Session,Asynchronous,Yii,Php 5.3,Browser History,我正在寻找一种方法,可以方便地保存访问过我的网站的用户在离开该网站后的浏览历史记录。在保存此文件时,我希望将在用户会话期间访问的页面链接在一起。这样我可以得到不同页面之间的相关性 我希望在会话结束时保存数据的原因是性能。我不想在每次页面加载时都在表中写入数据(可能会有很重的索引)的开销。另外,在会话结束时(或离开站点后)保存也有一个优点,即搜索引擎爬行器(没有状态/会话)可以很容易地被过滤掉(它们在会话历史记录中的页面总是不超过一个) 旁注:我的网站使用PHP5.3中的Yii框架 我想到了几个解
onbeforeuload
中发出ajax请求
我通过在函数的每个onclick
事件中设置一个变量来检查用户是否停留在站点上。另外,当新用户进入网站时,这个方法可能会被触发,这会给他额外的加载时间,让他一次处理多个会话历史记录(我希望避免这种情况)
sleep()
那样让用户等待。总之,我相信PHP中的异步执行(从一个同步请求启动)就是我想要的。有什么建议吗
这只是我的2c,而不是所有这些东西,我只是将用户访问的每个页面存储在会话中 当会话到期时(如何捕获此事件?我不知道,我想这可能是可行的),您将访问的页面存储在DB中。您还可以将它们写入临时文件,如果担心服务器上的负载过大,那么cron作业会在夜间处理临时文件
我同意阿伦对HTML/ajax的反应,这太疯狂和不可靠了。我想您可以在服务器端做得更好。谢谢!我想我只是想听听这个。知道如何在不需要自定义会话处理程序的情况下访问cron yob中的活动会话数据吗?我想我找到了解决问题的方法。克朗·尤布是一条路要走。可以使用加载会话数据。为了避免加载每个会话,每次cron yob运行时,我都会将每个会话的最后一个活动的时间戳保存在
MYISAM
表中。使用此表的INSERT DELAYED
语句不会直接花费我任何页面加载时间。或者,您可以通过在会话中设置一个值将会话标记为过时,然后cron作业只会查找所有过时的会话,并一次性将其持久化。是的,但是我仍然不知道我的cron yob中的sessionid(尽管我需要所有的)。