2010-04-26 42 views
3

当我们在像谷歌应用程序引擎打开会议上:启用会话 - 我们必须自己清理它们吗?

// appengine-web.xml 
<sessions-enabled>true</sessions-enabled> 

做应用程序引擎自动清理过期会话,还是我们必须这样做自己?打开它们之后,我在数据存储中看到一些条目正在生成,如_ah_session,我想知道是否它们是?

谢谢

回答

3

是的那些是会议条目。 Google的应用引擎文档包括以下内容:

该实现创建_ah_SESSION类型的数据存储实体和使用带有_ahs前缀的键的memcache条目。

http://code.google.com/appengine/docs/java/config/appconfig.html

至于清理会话数据。我发现下面的2讨论:

http://groups.google.com/group/google-appengine-java/browse_thread/thread/4f0d9af1c633d39a http://www.mail-archive.com/[email protected]/msg01372.html

HTH, 史蒂夫

0

Cleaning Up Expired Sessions From App Engine Datastore

您需要配置由谷歌提供的清理servlet来定期运行。注意:servlet最多可以清理100个条目。请务必决定您需要多久调用一次,并根据需要确定时间间隔。

在web.xml:

<web-app...> 
    <servlet> 
    <servlet-name>_ah_sessioncleanup</servlet-name> 
    <servlet-class>com.google.apphosting.utils.servlet.SessionCleanupServlet</servlet-class> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>_ah_sessioncleanup</servlet-name> 
    <url-pattern>/_ah/sessioncleanup</url;-pattern> 
    </servlet-mapping> 

    <security-constraint> 
    <web-resource-collection> 
     <web-resource-name>session-cleanup</web-resource-name> 
     <url-pattern>/_ah/sessioncleanup</url-pattern> 
    </web-resource-collection> 
    <auth-constraint> 
     <role-name>admin</role-name> 
    </auth-constraint> 
    </security-constraint> 
    ... 
</web-app> 

而且在cron.xml:

<cronentries> 
    <cron> 
    <url>/_ah/sessioncleanup?clear</url> 
    <description>Clean up sessions</description> 
    <schedule>every 15 minutes</schedule> 
    </cron> 
    ... 
</cronentries> 
+0

难道你作为项目承担清理这些实体的成本。我认为应该由基础设施来隐含地这样做,而不会成为开发者关心的问题。 – 2017-10-17 12:15:52

相关问题