我想与Memcache作为Joomla的会话处理程序进行通信。在PHP docs底部示例之后,我已经将memcache注册为会话处理程序。只要用户加载Joomla网站,其会话ID和其他用户数据一起存储到Joomla数据库中。但是现在我不知道如何让Memcache读取序列化会话数据,就像使用XCache使用xcache_get($sessionid)
一样,只要我创建一个新的Memcache实例,就可以在文档顶部示例中看到会话条目被删除来自数据库。但会议仍然存在。这让我很困惑。我需要访问(读/写)序列化的用户会话。我怎样才能从PHP会话处理程序中获取/设置它?序列化用户会话在Memcache中作为会话处理程序存储在哪里?以及如何读取/写入序列化的数据?
回答
我相信你正在寻找相当于是这样的:
获取会话:
$session = $memcache->get($sessionId);
设置会话:
$memcache->set(
'sessionprefix:'.$sessionId, // the session id.
$session, // the actual session itself
false, // set to true to use compression
$expire, // expiration in second
);
我还没有使用的memcache非常但我已经读过,人们通常在键中使用前缀来分隔不同类型的对象(这也是redis类似的数据存储的常见做法)。我在这里使用了'sessionprefix:',但我确定Joomla有他们自己的特定前缀。
是的,我已经假设从[此线程](http://stackoverflow.com/questions/1816128/change-serialization-函数式的PHP换分布式缓存)。但是没有回答的问题是:“变量$ memcache涉及到什么?”它不是全球性的。如前所述,我试图将它与一个新的Memcache实例关联起来,该实例未能按预期工作。我想这创建了第二个Memcache实例。前缀不应该是一个问题。主要问题是找出序列化数据所在的位置,以便我可以加载,反序列化,处理并将其存储回来以使更改生效。 – user1014412
memcache中的数据驻留在正在运行的memcache服务器的内存中(因此名称)。 memcache API(或协议)是修改它的唯一方法。查看http://blog.softlayer.com/2012/meet-memcached-a-developers-best-friend和http://memcached.org/about获取更详细的解释。 –
这对我来说并不新鲜。但是你正在混合数据缓存和会话缓存。虽然在使用数据缓存之前,数据缓存是明确地实例化的,但在通过ini_set()将其注册为PHP session.handler时不会。在我的初始文章中检查链接的PHP文档。后者没有提及它的回报,这就是为什么我坚持要求从它序列化的会话数据。此外,你友善的链接页面一起指的是另一个加速器 - MemcachD - (注意尾部D),这不是我所指的。我的问题涉及到Memcache - 没有尾随D. – user1014412
- 1. Magento会话序列化在哪里?
- 2. NodeJS Passport会话序列化 - 反序列化用户进入会话?
- 3. Where/Symfony2如何序列化和写入其会话数据?
- 4. PHP会话处理程序存储会话为JSON不解码php序列化正确
- 5. 在Vaadin处理不可序列化的Guava EventBus与会话序列化
- 6. 反序列化PHP会话数据
- 7. Zend_Session:反序列化会话数据
- 8. 反序列化数据库会话Codeigniter
- 9. 序列化会话对象
- 10. 会话状态序列化
- 11. 如何以及在哪里存储应用程序初始化数据?
- 12. 序列化存储在会话变量中的对象的任何理由?
- 13. 会话存储在哪里?
- 14. 我可以序列化一个hibernate会话,然后反序列化它以获取会话对象吗?
- 15. 序列化为asp.net会话状态
- 16. 为Ajax序列化会话内容
- 17. 会话变量存储在哪里以及我们如何看?
- 18. WCF在跳转之前序列化数据库中的数据,以及它在哪里反序列化?
- 19. Laravel在哪里存储memcached会话驱动程序的配置?
- 20. 当会话被允许被序列化/反序列化?
- 21. 在SQL中会话化时间序列数据
- 22. 我如何在Groovy应用程序中存储数据作为(会话,闪存)在Web应用程序中
- 23. ASP.NET会话状态服务器 - 保存序列化的数据
- 24. Rails 4.1会话的序列化
- 25. 验证码处理程序在会话过期中存储值
- 26. 通用处理程序中的会话?
- 27. 在使用PassportJS时序列化/反序列化用户进入会话的目的是什么?
- 28. 如何使会话数据可序列化
- 29. 在USSD Java应用程序的会话中存储数据。
- 30. 无法序列化会话状态
这是什么版本的joomla?在任何情况下,如果不是通过Joomla的会话实现,您通常可以通过$ _SESSION超级全局访问会话本身。直接访问会话不是最好的主意。 –
我指的是Joomla 3.2。相信我,我知道直接操纵并不是一个好主意,但我正在努力开发一个[补丁问题](https://github.com/joomla/joomla-cms/pull/3126),并且想要获得手牌在Memcache采用其他会话处理程序的工作代码到Memcache(d)处理程序(s) – user1014412