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后发送?

  • 相关阅读:
    Gin框架介绍与使用
    Go并发编程(goroutine)
    Go语言操作数据库及其常规操作
    Julia语言程序基础
    GoLang字符串处理
    在PHP7以上版本使用不了mysql扩展
    Docker基础命令
    Odoo14_Tree视图自定义按钮和自定义面板
    Odoo13_自定义客户端页面
    python_读取.xlsx(电子表格)文件
  • 原文地址:https://www.cnblogs.com/codesay/p/3255885.html
Copyright © 2011-2022 走看看