在PHP中,脚本正在向Web服务发出cURL请求,然后重用该句柄以对同一Web服务执行更多请求。嗅探连接,我发现它工作正常,直到第140个请求(数量变化)。然后似乎没有数据发送到服务器,它响应一个错误的请求。如果脚本继续尝试执行请求,它会开始发送垃圾,以下请求只是这样的字符串:
W47Sj47cDxTYW4gTHVpcztEPjtwPFNhbnRhIENydXo7Wj47cDxTYW50YSBGZTtTPjtwPFNhbnRpYWdvIERlbCBFc3Rlcm87Rz47cDxUaWVycmEgRGVsIEZ1ZWdvO1Y%2BO3A8VHVjdW1hbjtUPjs%2BPjs%2BOzs%2BO3Q8cDw7cDxsPG9uRm9jdXM7PjtsP(...)RDYW5jZWxhcicsJycpXDs7Pj4%2BOzs%2BOz4%2BOz4%2BO2w8Y2hrTm9TdW1pbmlzdHJhTWFpbDtjaGtGYWN0dXJhY2lvbjtpbWdCdG5GaWx0cm9GYWN0Oz4%2BaPpaTHB5VO%2ByKbxCglGRNS2EaFE%3D&rblTipoPersona=F&txtNombre=ANIBAL&txtApellido=LAJARA&txtNroDoc=23964779&txtFechaNac=27%2F07%2F1974&txtMail=anibal-nob%40hotmail.com&chkFacturacion=o(...)cmbTipoDoc=1&cmbSexo=M&cmbCicloFacturacion=02&cmbProvinciasFact=S&cmbLocalidadesFact=14244
看起来只是没有标题的数据的一部分(由我添加的点)。
如果我收到错误的请求回复,我可以(而且我会)重置连接,但我想知道为什么会发生这种情况。
是什么导致这个?是否可以重复使用cURL句柄的次数,或单个句柄/ php实例可以传输多少数据或其他内容?
代码是这样的:
$ch=curl_init();
while($running) {
$vars=array(what i need to send);
$url='http://something/';
$opts=array();
$opts[CURLOPT_RETURNTRANSFER]=true;
$opts[CURLOPT_FAILONERROR]=false;
$opts[CURLOPT_FORBID_REUSE]=false;
$opts[CURLOPT_FRESH_CONNECT]=false;
$opts[CURLOPT_AUTOREFERER]=true;
$opts[CURLOPT_ENCODING]='gzip,deflate';
$opts[CURLOPT_TIMEOUT]=0;
$opts[CURLOPT_CONNECTTIMEOUT]=0;
$opts[CURLOPT_HTTPHEADER]=array(
'Expect:',
'Connection: Keep-Alive',
'Keep-Alive: 3600'
);
$opts[CURLOPT_HEADER]=true;
$opts[CURLOPT_POST]=true;
$opts[CURLOPT_POSTFIELDS]=$vars;
$opts[CURLOPT_URL]=$url;
$opts[CURLOPT_FOLLOWLOCATION]=true;
curl_setopt_array($ch,$opts);
$res=curl_exec($ch);
...
}
正在从CLI执行脚本,没有执行时间限制。