多次请求后,持久性cURL连接失败

时间:2016-06-30 01:08:09

标签: php curl

在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执行脚本,没有执行时间限制。

0 个答案:

没有答案