如何从另一个应用程序中读取Catalyst :: Plugin :: Session :: Store :: File中的服务器数据?

时间:2012-01-22 19:56:57

标签: perl session catalyst

我在我的服务器上运行两个应用程序。第一个是Catalyst应用程序,配置为使用Session / Session::State::Cookie / Session::Store::File插件套件在服务器端保存一些会话状态。

另一个应用程序是在Perl中,但它不是Catalyst。我希望来自Catalyst应用程序的服务器端会话数据可供其他应用程序使用。

在第二个应用程序中,我可以加载客户端cookie并找到Catalyst应用程序的相关会话ID,但之后我就卡住了。我不知道如何将会话ID映射到文件名。例如,我有一个会话ID de079f151917d184219ef357f5298d0da478e015,但该会话的数据只能在名为fc1f6f651a2313c4081bcfef679061be35de40b7的文件中找到。非Catalyst应用程序应该如何知道如何找到该文件? (我的后续问题是非Catalyst应用程序应该如何读取该文件,但是当我到达它时我可以越过那个桥梁。)

使用Session::Store::DBICSession::Store::FastMmap等其他存储方案是否有更简单的方法可以做到这一点?

2 个答案:

答案 0 :(得分:4)

Session::Store::File使用Cache::FileCache。只需使用与您的应用放置其会话数据的位置相对应的Cache::FileCache实例化cache_root,然后使用$cache->get("session:$sessid")获取给定$sessid的会话数据,如果需要它,使用$cache->get("expires:$sessid")来获取到期时间,以便在会话到期时间time()之前忽略会话。

答案 1 :(得分:1)

如果有可能我会将会话存储切换到数据库,那么就不需要搜索文件了。

希望有所帮助。