今日、オコラボのサイトを暫定で完成としてデプロイしましたー!パチパチパチ!!
暫定で完成ってのも変な表現だけど。
自社サイトをSlim3使ってGAE上に構築するというのは、ローコストかつ安定してるので、機会損失が自社サーバで行うよりも少ないだろうと思います。こういう提案もしていきたいなぁ〜と思ってます。アクセス数によるけど、基本的に維持費はドメイン代だけで済むし。有料になるくらいアクセス集中するって、よっぽどですからね。
さて、話はSlim3でセッションを使うです。PHPerな自分はそういえばSlim3でセッションを使うようなことをしたことがなかった!セッションを使いたかった理由は、お問い合わせページでリロードによる連投を防ぐためです。
まず、appengine-web.xmlのsessions-enabledをtrueにします。
1 | < sessions-enabled >true</ sessions-enabled > |
これでセッションが使えるようになりました。
セッションの設定方法、取得方法、削除方法は以下の通りです。
1 2 3 4 5 6 7 8 | // セッション "key"に値"value"を設定する。 sessionScope( "key" , "value" ); // セッション "key"を取得する。 String key = sessionScope( "key" ); // セッション "key"を削除する。 removeSessionScope( "key" ); |
セッションのデータはDatastoreにどんどん蓄積されていくので、定期的に削除してやらなければならない模様。どうも既にセッションデータをクリーンするサーブレットは準備されているらしいので、cronで定期的に削除してやればよいらしいっす。
web.xmlに以下を追加します。
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 | < 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 > |
また、cron.xmlに以下のようにします。(cron.xmlがない場合はWEB-INF以下に作成)
1 2 3 4 5 6 7 8 | <? xml version = "1.0" encoding = "UTF-8" ?> < cronentries > < cron > < url >/_ah/sessioncleanup?clear</ url > < description >Clean up sessions</ description > < schedule >every 12 hours</ schedule > </ cron > </ cronentries > |
以上でーす。