Php 将所有用户活动存储为会话值,并在会话结束时保存会话值
通常,我会在php中通过对每个页面加载执行查询来保存所有用户活动、页面视图和所有值Php 将所有用户活动存储为会话值,并在会话结束时保存会话值,php,events,session,event-handling,Php,Events,Session,Event Handling,通常,我会在php中通过对每个页面加载执行查询来保存所有用户活动、页面视图和所有值 现在我考虑将所有这些存储为会话值和 在会话结束时执行查询。但是,我不知道如何在php中处理这个“会话结束”事件 我考虑过一个后台进程,它在会话超时之前存储所有会话值,但我对php中的多线程方法一无所知,尽管我听说有一些规避方法是可能的 我想确定用户在没有用户的情况下是否处于非活动状态 触发(如页面加载)并在 会话结束,在超时之前 这将节省数据库引擎上的一些工作负载,方式如下: 如果用户浏览了很多页面,我会
- 现在我考虑将所有这些存储为会话值和 在会话结束时执行查询。但是,我不知道如何在php中处理这个“会话结束”事件
- 我想确定用户在没有用户的情况下是否处于非活动状态 触发(如页面加载)并在 会话结束,在超时之前
update pageviews set numberofviews=numberofviews+1
在每个页面上加载
- 问题是:“如何在php中处理会话结束事件 没有用户活动?”
- 将数据存储在mysql表中,mysql表是一种内存类型,正在移动 每隔一段时间将记录保存到另一个表中李>
有点偏离正轨,但你可以自己做垃圾收集
- 使用PHP将会话保存在禁用垃圾收集的目录中,最好是tmpfs
- 编写一个周期性的PHP脚本,查找所有超过20分钟的会话文件,打开它们,将它们写入数据库并删除它们
这样,您只需每隔一段时间更新数据库,而不是每次加载页面。当然,这种方法的缺点是,除非会话上的最后一个活动与调用update函数的时间间隔完全对应,否则您可能无法在数据库中存储最新的会话信息。这只是一种胡思乱想,您可以在从javascript卸载窗口时发出http请求来保存会话数据。问题是浏览器通常会在页面关闭后停止请求,因此此请求甚至可能不会到达服务器,但我想这值得一试。尽管有一些解决方法,但解决此问题的每个解决方案都比记录每个请求中的每个用户活动效率更低 你想解决什么问题?我不明白你为什么不在每次请求时对数据库进行更新查询。它不应该超过00001秒 我绝对会去更新每个请求。它只有一行代码,不会在数据库上产生过多的负载,而且效率更高
您提出的方法很难测试,会产生不必要的负载,甚至可能会创建全局状态。你可以通过使用传统的解决方案来避免这一切。在确定会话何时“结束”时,会话是一个(…)问题 这不是创建会话的目的,因此仅使用会话机制是不可能实现的 对于标准PHP会话,您的选项有些有限,并且取决于会话存储: