2012-01-22 2 views
1

私は自分のサーバー上で2つのアプリケーションを実行しています。最初はCatalystアプリケーションで、サーバ側でいくつかのセッション状態を保存するためにSession/Session::State::Cookie/Session::Store::Fileプラグインスイートを使用するように設定されています。他のアプリからCatalyst :: Plugin :: Session :: Store :: Fileからサーバデータを読み込むにはどうすればいいですか?

他のアプリはPerlですが、Catalystではありません。私は、Catalystアプリケーションからのサーバー側のセッションデータを他のアプリケーションで利用できるようにしたいと思います。

2番目のアプリでは、クライアント側のCookieを読み込み、Catalystアプリケーションの関連セッションIDを見つけることができますが、それ以降はスタックされています。セッションIDをファイル名にマッピングする方法がわかりません。たとえば、セッションIDはde079f151917d184219ef357f5298d0da478e015ですが、そのセッションのデータはfc1f6f651a2313c4081bcfef679061be35de40b7という名前のファイルにのみ存在します。非Catalystアプリケーションはどのようにしてそのファイルを見つけるかを知っていますか? (私のフォローアップの質問は、非Catalystアプリケーションがそのファイルを読み込む方法ですが、私がそれに到達すると、そのブリッジを越えることができます)。

Session::Store::DBICまたはSession::Store::FastMmapのような別の記憶域スキームでこれを行う簡単な方法はありますか?

答えて

4

Session::Store::FileCache::FileCacheを使用します。アプリケーションがそのセッションデータを格納する場所に対応するcache_rootをインスタンス化して、$sessidのセッションデータを取得するには$cache->get("session:$sessid")を使用し、必要な場合は$cache->get("expires:$sessid")を使用してセッションを無視できるようにします有効期限がtime()より前の場合

+0

ありがとう、@hobbs、この回答は私にさらなる研究の時間を節約しました。また、 'Cache :: FileCache'コンストラクタで' namespace'パラメータを設定する必要がありました。これは正しい試行錯誤を繰り返しました。 – mob

1

可能であれば、セッションストアをデータベースに切り替えて、ファイルを検索する必要はありません。

希望に役立ちます。

関連する問題