PHP / JSON:收到$ _POST数组不完整

时间:2012-04-10 06:19:33

标签: php jquery arrays json post

使用$ .post(JQuery)作为JSON数组发布大约100行数据。 但由于某些原因,并未收到所有行。

数据看起来或多或少像这样(内容基本上是数字和小字符串):

rows = [["U", "0", "81949", 32 more...], ["U", "0", "81950", 32 more...] ..... ]

我发送数据的方式是:

$.post(url+"callback=?", { data : rows }, function(){}, "json");

如果我回显在本地版本中收到的行数(count($ _ POST)),则显示“100”,但在生产服务器上显示“25”(每次都是相同的数量)。

检查firebug中的请求详细信息,它正确显示已发送所有100个。

我虽然它可能是PHP“post_max_size”值,但我把它设置为“100M”,我认为这已经足够了。

我很确定它必须与服务器设置有关,但我没有想法...... 提前谢谢。

更新

  • 生产服务器有8GB的内存,占用了大约一半 它(这不是内存问题)。
  • 没有超时(所有过程都在大约3秒内完成)。

3 个答案:

答案 0 :(得分:9)

已经有一个已接受的答案,但对于那些不使用suhosin的人,问题可能是“max_input_vars”php设置较低。我的默认设置为1000,这还不够。

答案 1 :(得分:3)

您的生产服务器是否使用suhosin? Suhosin通常是限制GET和POST请求大小的罪魁祸首。它们对POST和GET大小有不同的限制(事实上,一个因我记忆而影响另一个,因此两者都必须增加)。

看看你的phpinfo(),看看那里是否有关于suhosin的任何内容。

可能影响您的Suhosin值:

  • suhosin.get.max_vars
  • suhosin.post.max_vars
  • suhosin.request.max_vars

(+等价值和变长)

此外,如果您正在上传文件,那么这也受到suhosin的限制:

  • suhosin.upload.max_uploads(默认情况下为25)

答案 2 :(得分:0)

查询数据的最大大小 - 请参阅here。 问题可能是2中的一个。正在接收部分数据,或者PHP在一定数量后删除数据。有关此设置的信息,请参阅here