当前位置: 首页 > 面试题库 >

PHP / Apache / AJAX-POST限制?

叶元凯
2023-03-14
问题内容

我正在尝试通过ajax(jQuery)发送200万个字符(非二进制字符串)的POST数据,并且在PHP方面总是空白。这是我的代码:

var string = "<data string that is 2M chars long>";
$.ajax({
    cache: false,
    type: 'POST',
    url: 'data.php',
    data: {'data_string': string}
});

在PHP方面,我收到以下错误消息(尝试从中检索数据时$_POST['data_string']):

Notice: Undefined index: data_string in data.php on line ...

我已经检查了post_max_sizephp.ini,并将其设置为256M,这是否足够?我很困惑,不确定自己在做什么错…

编辑:如果我做"string"少量数据(例如var string = 'test'),则按预期$_POST["data_string"]返回test。所以我想知道我是否在Apache2,PHP或浏览器本身中达到某种数据限制?我正在使用Google
Chrome浏览器17.0.963.79

EDIT2:memory_limit = 256M在php.ini中

EDIT3:max_input_time = -1在php.ini中

EDIT4:var_dump($ _ POST)返回数组(0)

EDIT5:在debian squeeze上运行最新的稳定版PHP5:具有Suhosin-Patch(cli)的PHP 5.3.3-7 +
squeeze8(构建:2012年2月10日14:12:26)


问题答案:

您必须检查您与服务器之间所有项目的限制参数。对于代理服务器非常困难(如果有的话),但是至少您可以检查:

阿帕奇:

  • LimitRequestBody,默认情况下约为2Gb,对于64位可能更大,请查看错误日志以获取详细信息。

PHP:

  • 与POST大小直接相关的post_max_size
  • upload_max_filesize可能不相关,不确定
  • max_input_time,如果POSt花费的时间太长
  • max_input_nesting_level,如果您的数据是具有很多子级别的数组
  • max_execution_time,但可以肯定不是
  • memory_limit,因为您可能会超出子进程允许的内存大小
  • max_input_vars,如果您的数据数组有很多元素

如果您已达到Apache的已编译限制,则唯一的解决方案是避免直接处理如此大数据块的POSt,您必须将其分成几部分。



 类似资料:
  • 我创建了一个Ajax post请求,由于某种原因,PHP脚本没有正确接收post数据。我得到一个500内部服务器错误,后面是“XHR加载失败:POST”。 以下是我的javascript的一部分: 以下是PHP: 详细查看了我的代码后,我认为我在ajax请求中做了一些不正确的事情。在我的PHP文件中,如果我创建一个javascript警报来输出$\u POST变量,则不会打印任何内容。

  • 我有一个页面(table.php),其中包含一个Datatables脚本,该脚本调用“table_data.php”作为源代码。 我试图在datatable表上方添加一个下拉筛选器,以控制datatable从哪组数据开始。问题是,Ajax数据文件(table_data.php)不能访问POST变量,我也没有看到通过dataTable({})实例化脚本的sAjaxSource调用向其传递变量的方法。

  • 问题内容: 我正在尝试将数据从表单发送到数据库。这是我使用的表格: 典型的方法是提交表单,但这会导致浏览器重定向。使用jQuery和Ajax,是否可以捕获表单的所有数据并将其提交给PHP脚本(例如 form.php )? 问题答案: 的基本用法如下所示: HTML: jQuery的: 注:由于jQuery的1.8,并支持已被弃用,并且。 注意:请记住,上面的代码段必须在DOM准备就绪后完成,因此您

  • 我似乎不知道如何使用ajax发布。我做了一个愚蠢的表单来尝试它,甚至在把它削减到只有两个值之后,仍然不能得到任何工作。我的html是这样的: 那么,我的外部javascript到目前为止只是一个单一的函数: 而我的php只是回显这些内容: 我在firebug或Chrome的工具薄中找不到任何错误…谁能告诉我我做错了什么?

  • 问题内容: 我正在尝试使用POST方法编写XMLHttpRequest。我过去已经使用GET方法设法使用XMLHttpRequest,但是在POST方面却很挣扎。 这是我的代码: 它基本上调用PHP脚本,然后将一些信息添加到数据库中。 问题答案: 好吧,我已经设法对它进行了排序。 奇怪的原因虽然可能与沙箱安全性有关,但是我没有使用完整的URL地址,而是使用了文件的相对路径,现在可以使用了。 谢谢大

  • 问题内容: 我正在尝试使用$ .post方法调用Web服务,我已经使用$ .ajax方法使它工作了: 但是,当我将相同的方法移到$ .post方法中时,它将无法工作: 我想念什么? 问题答案: 它不起作用,因为在您的方法中,您无法将请求的内容类型设置为。因此,不可能使用调用ASP.NET PageMethod,因为ASP.NET PageMethod需要JSON请求。您将不得不使用。 我将只修改,