使用phpfog托管时,编码器会话丢失会话状态


codeigniter session losing session state when hosted with phpfog

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

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

我不确定是什么原因导致的,也许是缓存层或phpfog的负载均衡器?什么好主意吗?谢谢!

更新:

在玩了很长一段时间之后,我可能已经能够追踪到这个bug在我的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;
}
*/

当该代码块没有在样式表中被注释掉时,包含在我的网站的许多页面中,在我的数据库中创建一个新的会话。当它被注释掉时,新会话不会发生?我明天会再研究一下,因为现在我都快睡着了,但这真的很奇怪。有人知道是什么引起的吗?

所以我最终确定了导致数据库中出现额外会话的原因。我修改了codeigniter,以呈现带有控制器和视图的自定义404页面,该页面将生成一个新会话。从本质上讲,我的浏览器将寻找不存在于我的服务器上的图像,并且由于浏览器请求图像/静态资源,它不会为它传递cookie。404控制器将被初始化,由于没有传递cookie,它将假设这是一个新会话并生成一个。