zoukankan      html  css  js  c++  java
  • php只能发送1000个post参数

    先说一下这个题目是有问题的,php只能发送1000个$_REQUEST参数。

    这其中包括了$_GET, $_POST, $_COOKIE.

    我是在发送1180个post参数时发现,无论怎样只能发送1000个。

    Q1:为什么php只能发送1000个请求参数?

    A1:在HTTP协议中对此是完全没有规定的。也就是1000的限制和http协议无关。

      主要原因:“通过调用Hash冲突实现各种语言的拒绝服务攻击漏洞”。

      PHP基于开源的hash算法,在设定特殊的key情况下,可以导致hash碰撞,最终数组退化为链表。

      这样每次数组插入元素操作,均变为O(n)时间复杂度。CPU利用率飙升,最终导致服务器无法提供服务。

    1000个限制来源于php.ini中的max_input_vars参数,可以通过修改配置文件,增加提交参数数目。

    但这个过程指标不治本。

    1. 一次发送1000多个参数是否有问题?

    2. 这些参数是否有共性,是否可以分次发送?

    $data = $query->fetchAll(PDO::FETCH_ASSOC);
    $cnt = count($data);
    $step = 100;
    for($i=0; $i < $cnt; $i+=$step) {
        $postData = array_slice($data, $i, $step);
        $ret = request($url, 'POST', $postData);
        llog("i, step: ".$i.', '.$step.', ret='.var_export($ret,true));
    }

    3. json_encode后发送?

  • 相关阅读:
    SpringBoot配置文件(2)
    SpringBoot配置文件(1)
    java8新特性之stream流
    java8新特性之Lambda表达式
    zoj 1709 Oil Deposits
    zoj 2110 Tempter of the Bone
    poj 2823 Sliding Window
    fzu 1894 志愿者选拔
    hdoj 1754 I Hate It
    poj2404中国邮递员
  • 原文地址:https://www.cnblogs.com/codesay/p/3255885.html
Copyright © 2011-2022 走看看