Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 谷歌应用引擎memcached登录_Php_Google App Engine_Login_Memcached - Fatal编程技术网

Php 谷歌应用引擎memcached登录

Php 谷歌应用引擎memcached登录,php,google-app-engine,login,memcached,Php,Google App Engine,Login,Memcached,我一直在使用GAE构建这个网站,并围绕一个memcached登录系统设计它(基于一个小的google搜索说memcached比session更好) memcached似乎全局存储其变量。所以现在当我在一台计算机上登录时,如果我转到另一台计算机,它会显示为已登录 $user = new Memcached(); //inputs and database query omitted //$row is an array with user's data $user->setMulti

我一直在使用GAE构建这个网站,并围绕一个memcached登录系统设计它(基于一个小的google搜索说memcached比session更好)

memcached似乎全局存储其变量。所以现在当我在一台计算机上登录时,如果我转到另一台计算机,它会显示为已登录

$user = new Memcached();

//inputs and database query omitted
  //$row is an array with user's data 
$user->setMulti(['id' => $row['userID'], 'email' => $row['email'], 'password' => $row['password'], 'fname' => $row['fName'], 'lname'=>$row['lName'], 'type'=>$row['userType']], 3000);
在每一个页面上,我都会像这样检索登录数据

$user = new Memcached();
$id=$user->get('id');
$email=$user->get('email');
$fname=$user->get('fname');
$lname=$user->get('lname');
$type=$user->get('type');

有没有办法防止这些登录成为全球性的?或者我必须将所有内容都更改为会话吗?

Memcache由所有实例和每个实例中的所有请求共享。此外,Memcache可以随时清除。你的用户不会喜欢被随机扔出你的应用程序。Memcache不适合用于登录目的

您需要使用会话。每个会话都链接到一个用户


顺便说一下,在Java运行时中,会话存储在Memcache中,它们也由数据存储支持。我没有在PHP运行时文档中看到它,但很可能实现是相同的。

memcache行为是预期的-所有实例共享相同的:

注意:缓存是全局的,并且在应用程序的各个应用程序中共享 前端、后端及其所有模块/版本

事实上,如果您想要每个用户登录,您必须使用会话服务