当前位置:  开发笔记 > 编程语言 > 正文

有没有办法从所有会话中清除一些会话数据?

如何解决《有没有办法从所有会话中清除一些会话数据?》经验,为你挑选了1个好方法。

一般来说,我有以下情况:

从数据库中获取产品及其相关数据

将获取的数据转换为php'product'对象

缓存会话中的产品对象

缓存是只读的,即客户在网站上查看产品.

但是有些调用getProductIdsByCategory($categoryId),这些结果的productId也被缓存,每个用户,而不是使用我读过的全局缓存.

问题在于,如果管理员端的某个人添加了新产品并将其与某个类别相关联,那么在getProductIdsByCategory新会话启动之前,客户将不会将新产品出现在他们的缓存中.

有没有办法在$_SESSION['x']添加新产品时清除服务器上的所有会话?我不想破坏所有会话,因为客户将丢失他们的登录等.

或者我应该将这些缓存的productId搜索移动到全局缓存中吗?

ps我正在使用自定义构建的缓存,而不是memcached或类似的.

谢谢



1> chaos..:

默认情况下,会话数据只是文件系统中某处的序列化文件,并且可以修改所有这些文件以删除有问题的信息(尊重锁定,这样您就不会踩到任何当前打开的会话).

不过我不是真的推荐它.我建议使用一种方法来表示应该刷新这个缓存的数据,就像数据库存储的时间戳在session_start()发生时查看,如果缓存的数据早于时间戳,则刷新缓存.

推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有