2011-03-11 60 views
0

我正在研究可通过智能手机访问的Codeigniter应用程序。问题是,至少对于我的运营商来说,应用程序不会因为“服务器”错误而加载(根据5.0黑莓浏览器,POST数据发送太大或GET数据收到太大,以及6.0黑莓浏览器, “请求的URL无法检索 - 对不起,您尝试上传或下载的文件太大”)。奇怪的是,当连接到WiFi网络时,该网站再次完美无瑕地开始工作。

我想知道如果我能够确定以MB/KB发送和接收的PHP POST数据,那么我可以尽可能地减少它。

我不知道这是Codeigniter问题还是Carrier问题,或者两者兼而有之,因为只有当我通过URL传递数据时才会出现错误。例如

example.com/codeigniter/main - 好吧 example.com/codeigniter/main/post/131 - 繁荣,死亡。

是“codeigniter /”应用程序,“main /”控制器,“post /”方法和131的值。

我使用Codeigniter反应堆2.0.1,顺便说一句。

+0

HTTP Headers的外观如何? – drudge 2011-03-11 21:38:15

+0

@jnpcl现在我看到它们,HTTP标头非常庞大。不是很大,但比我想象的要多。这是主要的GET HTTP Set_cookie:http://sharetext.org/SN4 - 我认为这可能不是在CI中设置cookie的最佳方式(如果有另一个)。还有其他5个“Cookie”HTTP请求,如http://sharetext.org/SN5。虽然它只有73kb。这可能吗? – AeroCross 2011-03-12 16:59:06

回答

0

如果您试图测量请求的大小,$ _SERVER superglobal有一个属性。

$size = (int)$_SERVER['CONTENT_LENGTH']; 

使用此代码将您的帖子提交给终端并回显它的值。

如果请求是通过POST方法发送的,则会将Content-length HTTP标头的值分配给$ size。

+0

这确实回答了问题,但本身并没有解决问题(因为错误令人困惑 - 它表示可能POST太大或GET太大,但实际使用中都不存在)。感谢您的提示,但! – AeroCross 2011-03-12 16:53:13

+0

@AeroCross:我会猜测你在cookie中存储的方式太多了。为了兼容性(和理智),请将它保持在4KB以下。 – drudge 2011-03-12 17:40:53

+0

@jnpcl你猜错了 - 我在cookie中只存储了1.2 KB(并且你知道CI将很多东西存储在用户定义的数据旁边)。问题是,从我测试过的那个长长的头文件是几个$ this-> session-> set_userdata()调用(总共4个)的结果。 Codeigniter似乎一遍又一遍覆盖它为每个$ this-> session-> set_userdata()调用保存的数据。在其他的GET请求中,只有一个正在显示 - 实际的cookie。 – AeroCross 2011-03-12 18:06:20