Php googleappengine中的树脂会话

Php googleappengine中的树脂会话,php,google-app-engine,session,Php,Google App Engine,Session,我正在使用Resin在GAE上开发,似乎我在生产站点上的PHP会话是短暂的,不会得到更新(即,发出请求似乎不会延长它的有效期)。本地可以,只要我不关闭选项卡,会话就会持续 有关于这个的指示吗?我的用户因为经常被踢而感到沮丧:(我认为代码是最好的教程:) 现在,为了获得正确的会话功能,您需要添加set和get方法,或者更好地添加一个小类来处理它。对类进行少量抽象,您可以选择在不同的web应用程序场景中对同一库使用何种会话机制。什么是“远程站点”?您是否使用App Engine向另一个单独的站点发出

我正在使用Resin在GAE上开发,似乎我在生产站点上的PHP会话是短暂的,不会得到更新(即,发出请求似乎不会延长它的有效期)。本地可以,只要我不关闭选项卡,会话就会持续


有关于这个的指示吗?我的用户因为经常被踢而感到沮丧:(

我认为代码是最好的教程:)


现在,为了获得正确的会话功能,您需要添加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);