使用phpfog托管时,codeigniter会话丢失会话状态

时间:2011-07-18 22:38:32

标签: session hosting session-state php

我已经构建了一个php / codeigniter应用程序,当我在vps上使用rackspace托管它时,该应用程序运行良好。我最近将它迁移到phpfog的托管环境,但是我遇到了用户会话的问题。

我正在使用sessions类将数据存储在数据库中。我看到的问题是,在初始页面请求中,在数据库中创建了两个会话记录。然后为每个页面请求创建一个新的会话记录。当从一个页面到另一个页面时,应用程序会丢失其会话。

我不确定是什么导致这种情况,可能是phpfog的缓存层或负载均衡器?有任何想法吗?谢谢!

更新

在玩了很长一段时间之后,我可能已经能够将这个错误追踪到我的一个CSS文件中的@ font-face包含了????????

/*
@font-face {
    font-family: 'ColaborateLightRegular';
    src: url('/application/assets/web/css/fonts/ColabLig-webfont.eot');
    src: url('/application/assets/web/css/fonts/ColabLig-webfont.eot?iefix') format('eot'),
         url('/application/assets/web/css/fonts/ColabLig-webfont.woff') format('woff'),
         url('/application/assets/web/css/fonts/ColabLig-webfont.ttf') format('truetype'),
         url('/application/assets/web/css/fonts/ColabLig-webfont.svg#webfontR2xcGGVv') format('svg');
    font-weight: normal;
    font-style: normal;
}
*/

如果我的许多网站页面上的样式表中没有注释掉该代码块,则会在我的数据库中创建一个新会话。当它被注释掉时,新会话不会发生?我明天再看一下,因为现在我睡着了,但这很奇怪。有谁知道可能导致这种情况的原因?

1 个答案:

答案 0 :(得分:3)

所以我最终确定了导致额外会话出现在我的数据库中的原因。我修改了codeigniter以使用控制器和视图呈现自定义404页面,此页面导致生成新会话。基本上我的浏览器将寻找我的服务器上不存在的图像,并且由于浏览器正在请求图像/静态资源,因此它没有传递cookie。然后404控制器将被启动,因为没有cookie被传递,它将假设这是一个新的会话并生成一个。追踪相当棘手的错误。