我已经构建了一个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;
}
*/
如果我的许多网站页面上的样式表中没有注释掉该代码块,则会在我的数据库中创建一个新会话。当它被注释掉时,新会话不会发生?我明天再看一下,因为现在我睡着了,但这很奇怪。有谁知道可能导致这种情况的原因?
答案 0 :(得分:3)
所以我最终确定了导致额外会话出现在我的数据库中的原因。我修改了codeigniter以使用控制器和视图呈现自定义404页面,此页面导致生成新会话。基本上我的浏览器将寻找我的服务器上不存在的图像,并且由于浏览器正在请求图像/静态资源,因此它没有传递cookie。然后404控制器将被启动,因为没有cookie被传递,它将假设这是一个新的会话并生成一个。追踪相当棘手的错误。