2

使用 $.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 秒内完成)。
4

3 回答 3

9

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

于 2012-06-28T19:04:31.037 回答
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)
于 2012-04-10T06:52:02.183 回答
0

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

于 2012-04-10T06:31:40.870 回答