本地apache服务器上的奇怪的memcache行为

时间:2013-03-30 15:58:52

标签: php ubuntu memcached

我目前在本地部署我的网络服务api时遇到了麻烦。我正在使用带有PHP Memcache扩展的memcached。这是以下行为;

我有一个登录功能,首先使用以下代码检查用户信息是否在内存中;

$cache = Memcacher::get_instance()->load( 'user.' . $email);
  • 如果缓存存在,那么它会将变量$cache返回为true
  • 如果缓存不存在,那么我用以下代码将其保存到内存中;

    $cache = Memcacher::get_instance()->save( 'user.' . $login['value']['email'], $login);

参数$login是一个保存用户信息的关联数组。

将其保存到内存后,我尝试重新登录。但是,在我保存到memcached服务器3-4次之前,它没有保存信息。

3-4次登录后,我成功从缓存中获取登录信息。

有谁能解释我这种奇怪的行为?是否有任何memcached配置变量来防止这种情况?

注意:我正在通过sudo service memcached restart重新启动memcached来刷新内存 在Ubuntu上

注意:Memcacher是一个使用PHP Memcache扩展的set()get()函数的自定义模块

注意:以下是Memcacher

的源代码

1 个答案:

答案 0 :(得分:1)

您正在使用字符串连接数组。在某些情况下,$ login是一个数组可能不是真的,因此您将开始接收您拥有的信息,因为连接将起作用。但如果它是一个数组,你将无法在memcache中保存密钥。你会收到一个通知,我想你忽略了。