对不起,如果这是重复的,我想它会是,但找不到任何东西。
我有一个flex应用程序,我通过IE将数据发布回php/mysql服务器。我还没有遇到任何问题,但提前知道这一点可能会让我省去很多挫折和工作。通过http发布数据有大小限制吗?
这篇文章说不:
http://www.netlobo.com/ie_form_submit.html
这个讨论的答案是肯定的:
http://bytes.com/topic/php/answers/538226-what-maximum-limit-using-post-method
这些都是我在网上能找到的。所以请将答案限制在亲自测试/验证的数字。
我想要返回一个XML字符串,可以相当大(说高达5mb)。
如果它有任何区别:浏览器将永远是IE(我们的产品需要它),post来自和flex中的httpService, web服务器是php, DB是mySql。
对于那些因为网络托管而不能更改php配置的开发人员。(我的设置最大大小256MB, 1000个最大变量)
我遇到了同样的问题,5个大数据对象(关联数组)中只有2个在服务器端接收到子结构。
我发现整个子结构在post请求中被“压平”了。一个对象就变成了上百个字面变量。最后,它发送的不是5个对象变量,而是成百上千个元素变量。
这种情况下的解决方案是将每个子结构序列化为String。然后它作为5个字符串变量被服务器接收。
例子:
如上所述{variable1: JSON.stringify (myDataObject1)的操作:JSON.stringify (myDataObject2)…}
最好的解决方案之一是不使用多个或超过1,000个输入字段。您可以用任何特殊字符连接多个输入,如ex. @。
看到这个:
<input type='text' name='hs1' id='hs1'>
<input type='text' name='hs2' id='hs2'>
<input type='text' name='hs3' id='hs3'>
<input type='text' name='hs4' id='hs4'>
<input type='text' name='hs5' id='hs5'>
<input type='hidden' name='hd' id='hd'>
使用任何脚本(JavaScript或JScript),
document.getElementById("hd").value = document.getElementById("hs1").value+"@"+document.getElementById("hs2").value+"@"+document.getElementById("hs3").value+"@"+document.getElementById("hs4").value+"@"+document.getElementById("hs5").value
这样,就可以绕过max_input_vars问题。如果您在php.ini文件中增加max_input_vars,这对服务器是有害的,因为它使用了更多的服务器缓存内存,这有时会导致服务器崩溃。