【问题标题】:Pass large variables with php and http?用php和http传递大变量?
【发布时间】:2010-11-12 02:48:06
【问题描述】:

我想通过 http 将大变量传递给另一台服务器上的 PHP 脚本,例如: “example.com/get.php?data=这是相当多的数据......”

我总是得到服务器(apache)的响应:“Request-URI Too Large”

有什么想法可以将大变量传递给该脚本吗?

【问题讨论】:

  • 您是否考虑过改用 POST 方法?

标签: php http variables


【解决方案1】:

如果数据对于 GET 来说太长,那么使用 POST 呢?

(考虑到 POST 的大小限制,PHP 中一般为 2 MB 左右;取决于配置,可能更多。)

如果您使用的是curl (也就是说,如果它是您服务器上的 PHP 脚本,它会向另一台服务器发出请求;否则,您可能会使用 HTML 格式的表单)查看curl_setopt 的文档:某些选项一定会让您感兴趣;-)

【讨论】:

    【解决方案2】:

    如前所述,您真的应该切换到 POST。

    POST 的初始最大大小约为 2mb,可以通过在 php.ini 文件中设置 upload_max_filesize 和 post_max_size 来配置。

    【讨论】:

      【解决方案3】:

      最好的选择是 $_POST。如果变量太大,您甚至可以使用 AJAX 添加“加载图标”。

      【讨论】:

        【解决方案4】:

        尝试使用 POST 而不是 GET?也就是说,像这样:

        <form name=fooForm method=POST action=http://example.com/get.php> <input type="hidden" name=data value="this is quite a lot of data"> </form>

        添加提交按钮或使用javascript触发提交,有点像这样:

        &lt;a href="javascript:document.fooForm.submit()"&gt;Submit&lt;/a&gt;

        您也可以尝试通过 cookie 传递数据,它们的大小可达 4KB。

        【讨论】:

          【解决方案5】:

          一定要使用 POST。

          顺便说一下,此链接记录了最大 url 长度:
          http://www.boutell.com/newfaq/misc/urllength.html

          • 浏览器:+- 2000
          • 阿帕奇:+- 4000
          • IIS: +- 16000

          【讨论】:

            【解决方案6】:

            如果您对另一台服务器上的 PHP 脚本的源代码有任何形式的控制,它应该是 POST 数据而不是 GET。但是,如果您有一个非常有效/实际的理由来使用 GET 而不是 post。然后你需要做出权衡并牺牲发送非常大数据的能力来继续使用 GET 方法。

            正如 Joeri 正确指出的那样,URL 的长度有上限,并且此限制可能因浏览器和服务器而异。不同版本或相同浏览器/服务器也可能支持不同的 URL 最大长度。因此,您可以通过 GET 请求在 URL 中发送编码的数据量是有限的。

            【讨论】:

              猜你喜欢
              • 2016-02-02
              • 2016-08-31
              • 1970-01-01
              • 2020-01-24
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2018-12-31
              • 1970-01-01
              相关资源
              最近更新 更多