200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > php curl 请求失败 PHP CURL库之GET POST数据大小限制导致请求失败解决方案

php curl 请求失败 PHP CURL库之GET POST数据大小限制导致请求失败解决方案

时间:2020-11-14 23:07:36

相关推荐

php curl 请求失败 PHP CURL库之GET POST数据大小限制导致请求失败解决方案

背景概述:

我有一个脚本,里面定义了一个方法,方法里面是一个CURL

GET的封装。在使用过程中一起正常。突然发现有一天一直报失败警报。于是,我去查看代码,发现没有任何问题。最后通过百度,发现这个PHP的CURL库并默认情况下,当发送的数据超过1024字节的时候,不会返回响应的内容。这就是问题的所在。

封装的CURL GET函数如下:

function sendRequestGame($url)

{

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_TIMEOUT, 10);

curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);

$retData = curl_exec( $ch );

curl_close( $ch );

return $retData;

}

我相信这段代码极少有人会看出来问题。因为,你测试此函数请求一个URL,是能正常收到返回的。但是,假如这个URL的长度超过了1024个字节长度。试想一下?还会正常返回么?答案是否定的。因为,PHP

CURL库默认1024字节的长度不等待数据的返回。只要将以上函数修改为如下即可解决这此问题。

function sendRequestGame($url)

{

$header = array('Expect:');

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_TIMEOUT, 10);

curl_setopt($ch, CURLOPT_HTTPHEADER, $header);

curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);

$retData = curl_exec( $ch );

curl_close( $ch );

return $retData;

}

嗯。现在这个函数,我增加了一个Header。但是,注意,这个Header不能与以下Header一起使用:

'Content-Type:text/html;charset=UTF-8'

否则,依然会接收不到响应的数据。更深层次的原因我也没有去深入研究。

这个问题是在4399工作时与游戏工作室对接API时遇到的问题。这个问题估计与鸟哥提到的CURL BUG一样:《Curl的毫秒超时的一个”Bug”》

作者寒冰遇到这个问题的是,也没有精力从底层分析问题所在。鸟哥的文章从底层分析了原因。大家注意就是了。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。