【问题标题】:Check sent $_POST size检查发送的 $_POST 大小
【发布时间】:2011-03-11 21:34:58
【问题描述】:

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

我想知道是否可以测量发送和接收的 PHP POST 数据(以 MB / KB 为单位),这样我就可以尽可能地精简它。

我不知道这是 Codeigniter 问题,还是运营商问题,或两者兼而有之,因为该错误仅在我通过 URL 传递数据时出现。例如

example.com/codeigniter/main - 好的 example.com/codeigniter/main/post/131 - 繁荣,死了。

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

我正在使用 Codeigniter Reactor 2.0.1,顺便说一句。

【问题讨论】:

  • HTTP 标头是什么样的?
  • @jnpcl HTTP 标头很大,现在我看到了它们。实际上并不是很大,但比我想象的要多。这是主要的 GET HTTP Set_cookie:sharetext.org/SN4 - 我认为这可能不是在 CI 中设置 cookie 的最佳方式(如果有另一个)。还有其他 5 个类似这样的“Cookie”HTTP 请求:sharetext.org/SN5。虽然只有 73kb。会这样吗?

标签: php apache codeigniter post


【解决方案1】:

如果您尝试测量请求的大小,$_SERVER 超全局具有此属性。

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

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

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

【讨论】:

  • 这确实回答了问题但并没有解决问题本身(因为错误令人困惑 - 它说可能 POST 太大或 GET 太大,但实际使用中都没有)。不过感谢您的提示!
  • @AeroCross:我猜你在 cookie 中存储了太多东西。为了兼容性(和理智),将其保持在 4KB 以下。
  • @jnpcl 你猜错了——我在 cookie 中只存储了 1.2 KB (你知道 CI 存储了很多东西除了用户定义的数据)。问题是,从我一直在测试的情况来看,那个长长的标题是几个 $this->session->set_userdata() 调用的结果(总共 4 个)。 Codeigniter 似乎一遍又一遍地覆盖它为每个 $this->session->set_userdata() 调用保存的数据。在其他 GET 请求中,只有一个显示 - 实际的 cookie。
  • @AeroCross:我的评论基于您发布的链接 (sharetext.org/SN4)——该页面的数据不到 30KB。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-06
  • 2019-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多