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

 

转载于:https://www.cnblogs.com/codesay/p/3255885.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值