PHP中Curl返回的数据被切断

PHP中Curl返回的数据被切断,php,web-services,curl,Php,Web Services,Curl,我正在尝试使用PHP的Curl扩展调用webservice。大多数情况下,Web服务的结果被精确地截断为4000字节,但并不总是如此。 如果我使用其他工具或Curl命令行工具调用webservice,则情况并非如此,因此问题可能仅限于php_Curl 我正在做以下工作: 有什么想法吗 (我使用的是PHP5.5.30和/或7.0.10,这两个版本的问题相同)curl_setopt($c,CURLOPT_HEADER,1);仅用于调试,结果大小为4000+sizeof(headerdata)。my_

我正在尝试使用PHP的Curl扩展调用webservice。大多数情况下,Web服务的结果被精确地截断为4000字节,但并不总是如此。 如果我使用其他工具或Curl命令行工具调用webservice,则情况并非如此,因此问题可能仅限于php_Curl

我正在做以下工作:

有什么想法吗


(我使用的是PHP5.5.30和/或7.0.10,这两个版本的问题相同)

curl_setopt($c,CURLOPT_HEADER,1);仅用于调试,结果大小为4000+sizeof(headerdata)。my_request_xml_data有多大?大约为12kb。由于Web服务器不返回错误,发送过程似乎正常工作。它似乎给出了一个正确的答案,但它被切断了。有时(很少)它可以工作,而且它总是与其他工具一起工作。输入数据总是相同的。
    $fh = fopen($outfilename, "w");
    $c = curl_init();
    curl_setopt($c, CURLOPT_URL, $url);
    curl_setopt($c, CURLOPT_NOPROGRESS, 1);
    curl_setopt($c, CURLOPT_POSTFIELDS, $my_request_xml_data);
    curl_setopt($c, CURLOPT_HTTPHEADER, array("Content-Type" => "text/xml"));
    curl_setopt($c, CURLOPT_MAXREDIRS, 50);
    curl_setopt($c, CURLOPT_CUSTOMREQUEST, "POST");
    curl_setopt($c, CURLOPT_BINARYTRANSFER, 1);
    curl_setopt($c, CURLOPT_TCP_KEEPALIVE, 1);
    curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($c, CURLOPT_FILE, $fh);
    curl_setopt($c, CURLOPT_HEADER, 1);
    $ret = curl_exec($c);
// if $ret is false some error handling comes here...
    curl_close($c);
    fclose($fh);