【问题标题】:Where is the serialized user session stored with Memcache as a session handler? And how to read/write into the serialized data?使用 Memcache 作为会话处理程序存储的序列化用户会话在哪里?以及如何读/写序列化数据?
【发布时间】:2014-02-22 11:34:55
【问题描述】:

我正在尝试作为 Joomla 的会话处理程序与 Memcache 通信。在PHP docs 底部示例之后,我已经注册了memcache 一个会话处理程序。一旦用户加载 Joomla 站点,其会话 ID 与其他用户数据一起存储到 Joomla 数据库中。但是现在我不知道如何使用 Memcache 来读取序列化的会话数据,就像可以使用 XCache 使用 xcache_get($sessionid)从数据库中删除。但是会话仍然存在。这让我很困惑。我需要访问(读/写)序列化的用户会话。如何从 PHP 会话处理程序中获取/设置它?

【问题讨论】:

  • 这是什么版本的joomla?在任何情况下,如果不是通过 Joomla 的会话实现,您通常可以通过 $_SESSION 超级全局访问会话本身。直接访问会话不是最好的主意。
  • 我指的是 Joomla 3.2。相信我,我知道直接操作不是一个好主意,但我正在努力开发一个patch for an issue 并且错过了获取 Memcache 以将其他会话处理程序的工作代码用于 Memcache(d) 处理程序

标签: php session memcached joomla3.0


【解决方案1】:

我相信您正在寻找的等价物是这样的:

获取会话:

$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,但我读到人们通常在key中使用前缀来分隔不同类型的对象(这也是redis的常见做法,类似的数据存储)。我在这里使用了 'sessionprefix:' 但我确信 Joomla 有自己的特定前缀。

【讨论】:

  • 是的,我已经从this thread 猜到了。但是没有回答的问题是:“变量 $memcache 与哪里相关?”它不是全球性的。如前所述,我试图将它与一个新的 Memcache 实例相关联,但该实例未能按预期工作。我想这创建了第二个 Memcache 实例。前缀应该不是问题。主要问题是找出序列化数据所在的位置,以便我可以加载、反序列化、处理并将其存储回来以使更改生效。
  • memcache 中的数据驻留在正在运行的 memcache 服务器的内存中(因此得名)。 memcache API(或协议)是修改它的唯一方法。查看blog.softlayer.com/2012/meet-memcached-a-developers-best-friendmemcached.org/about 以获得更长的解释。
  • 这对我来说并不新鲜。但是你混淆了数据缓存和会话缓存。虽然数据缓存在人们可以使用它之前首先被明确地实例化,但在通过 ini_set() 将其注册为 PHP session.handler 时却不是这样。在我最初的帖子中检查链接的 PHP 文档。作为回报,后者没有引用它,这就是为什么我坚持向它请求序列化的会话数据。此外,您友好的链接页面确实都引用了另一个加速器 - MemcachD -(注意尾随的 D),这不是我所指的。我的问题是关于 Memcache - 没有尾随 D。
  • 似乎它们都访问了相同的存储,但 API 不同:ca2.php.net/manual/en/intro.memcache.php。据我所知,memcache 扩展是特定于 PHP 的,而 memcached 使用 libmemcached。
猜你喜欢
  • 2015-12-02
  • 1970-01-01
  • 2014-11-28
  • 2014-12-12
  • 2012-12-02
  • 1970-01-01
  • 1970-01-01
  • 2011-11-18
  • 1970-01-01
相关资源
最近更新 更多