Php googleappengine中的树脂会话
我正在使用Resin在GAE上开发,似乎我在生产站点上的PHP会话是短暂的,不会得到更新(即,发出请求似乎不会延长它的有效期)。本地可以,只要我不关闭选项卡,会话就会持续Php googleappengine中的树脂会话,php,google-app-engine,session,Php,Google App Engine,Session,我正在使用Resin在GAE上开发,似乎我在生产站点上的PHP会话是短暂的,不会得到更新(即,发出请求似乎不会延长它的有效期)。本地可以,只要我不关闭选项卡,会话就会持续 有关于这个的指示吗?我的用户因为经常被踢而感到沮丧:(我认为代码是最好的教程:) 现在,为了获得正确的会话功能,您需要添加set和get方法,或者更好地添加一个小类来处理它。对类进行少量抽象,您可以选择在不同的web应用程序场景中对同一库使用何种会话机制。什么是“远程站点”?您是否使用App Engine向另一个单独的站点发出
有关于这个的指示吗?我的用户因为经常被踢而感到沮丧:(我认为代码是最好的教程:)
现在,为了获得正确的会话功能,您需要添加set和get方法,或者更好地添加一个小类来处理它。对类进行少量抽象,您可以选择在不同的web应用程序场景中对同一库使用何种会话机制。什么是“远程站点”?您是否使用App Engine向另一个单独的站点发出请求?对不起,我的意思是生产站点已更新
// global mem cache service handle
$MEM_CACHE_SERVICE = NULL;
// table to store session like information
$MY_SESSION_TABLE = array();
function load_mcache($key) {
global $MEM_CACHE_SERVICE;
if (!$MEM_CACHE_SERVICE) {
import com.google.appengine.api.memcache.MemcacheServiceFactory;
import com.google.appengine.api.memcache.Expiration;
$MEM_CACHE_SERVICE = MemcacheServiceFactory::getMemcacheService();
}
return $MEM_CACHE_SERVICE->get($key);
}
function save_mcache($key, $value, $cache_time) {
global $MEM_CACHE_SERVICE;
if (!$MEM_CACHE_SERVICE) {
import com.google.appengine.api.memcache.MemcacheServiceFactory;
import com.google.appengine.api.memcache.Expiration;
$MEM_CACHE_SERVICE = MemcacheServiceFactory::getMemcacheService();
}
$expiration = Expiration::byDeltaSeconds($cache_time);
return $MEM_CACHE_SERVICE->put($key, $value, $expiration);
}
// unserializing array from mem cache
// if nothing found like first time and after a minute, then add key to the table
if (!($MY_SESSION_TABLE = unserialize(load_mcache($_REQUEST['JSESSIONID'])))) {
// save something to cache on first page load because we didnt have anything
$MY_SESSION_TABLE['key1'] = date('m/d/Y H:i:s');
// using jsessionid as a mem cache key, serializing array and setting cache time to one minute
save_mcache($_REQUEST['JSESSIONID'], serialize($MY_SESSION_TABLE), 60);
}
// now my session table is available for a minute until its initialized again
print_r($MY_SESSION_TABLE);