PHP CURL - 如何判断所请求的整个文件是否未完全下载

我正在使用CURL和代理来获取一些xml文件,当我尝试加载/使用xml(simplexml_load_string)时,偶尔只有部分XML文档出现并失败。 我觉得像..
    if(curl_errno($ch))
    {
        $error = curl_error($ch);
        // handle error
    }
将通过CURL errno捕获此类错误..   CURLE_PARTIAL_FILE(18)      文件传输更短或更大   超出预期。这发生在   服务器首先报告预期   传输大小,然后传递数据   与之前不符   给定的大小。 但是,这不起作用,我认为这可能是由于使用代理。还有什么我可以检查的吗?我现在唯一的想法是为XML文档的最后一位做一个preg_match,但这似乎不太理想,因为我得到了多种类型的XML文档,我必须为每种类型编写检查。     
已邀请:
我遇到了代理问题,我没有使用cURL的错误处理程序解决问题。如果您有权访问这两个脚本(请求的那个脚本和提供XML的脚本),那么请求的脚本会在XML的末尾提供它所期望的唯一代码:
// Request
http://localhost/getxml.php?id=4&uniq=1337
并在输出的末尾添加注释:
<?xml encoding="..." ..?>
...
<!--1337-->
    
好吧,出现错误已经告诉您,您获得的XML文件无效。您需要做的是捕获该错误并处理它。 一个快速解决方法是:
$xml = @simplexml_load_string($xmlString);
if($xml === false){ /* The XML was not valid. */ }
一个日志修复是这一个:
libxml_use_internal_errors(true);
libxml_clear_errors();
$xml = simplexml_load_string($xmlString);
if( ($err = libxml_get_last_error()) !== false ){ /* We got ourselves an XML error. */ }
    

要回复问题请先登录注册