Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何检查simpleXML是否为空_Php_Xml - Fatal编程技术网

Php 如何检查simpleXML是否为空

Php 如何检查simpleXML是否为空,php,xml,Php,Xml,因此,我构建了一个包含multi-curl的脚本来验证来自更多URL的XML和extrac$XML->loc,但是当他发现任何其他非XML文件时,我的脚本崩溃(停止) ...multi curl code... if($httpcode>=200 && $httpcode<=300) { $xml = new SimpleXMLElement($data); if($xml !== NULL) { for

因此,我构建了一个包含multi-curl的脚本来验证来自更多URL的XML和extrac$XML->loc,但是当他发现任何其他非XML文件时,我的脚本崩溃(停止)

...multi curl code...
    if($httpcode>=200 && $httpcode<=300) {
        $xml = new SimpleXMLElement($data);
        if($xml !== NULL) {
            foreach ($xml->url as $url_list) {
            $url = $url_list->loc;
            $newurls[] = $url;
            }
        }
    }
…多重卷曲代码。。。
如果($httpcode>=200&&$httpcodeurl作为$url\u列表){
$url=$url\u列表->位置;
$newURL[]=$url;
}
}
}
如果我放入5个有效的xml URL,它就会工作,但是如果我放入100个链接,其中一个不是xml文件,脚本就会停止

错误:

[root@test ~]# php a z2
PHP Fatal error:  Uncaught exception 'Exception' with message 'String could not be parsed as XML' in /root/a:160
Stack trace:
#0 /root/a(160): SimpleXMLElement->__construct('\r\n<!DOCTYPE htm...')
#1 /root/a(65): mycurl_done('http://southpas...', '\r\n<!DOCTYPE htm...', Resource id #36)
#2 /root/a(175): ThreadsLoop()
#3 {main}
  thrown in /root/a on line 160
[root@test ~]#
[root@test~]#php a z2
PHP致命错误:未捕获异常“exception”,在/root/a:160中显示消息“String无法解析为XML”
堆栈跟踪:

#0/root/a(160):SimpleXMLElement->\u构造('\r\n您可以使用try-catch块来处理异常

try {
  $xml = new SimpleXMLElement($data);
  //XML is valid
  ...
} catch(Exception $e) {
  //XML is invalid
}

它似乎可以工作,但在30秒后我的脚本从操作系统中被终止…唯一的解释是因为数组不能保存那么多的信息。@john smith我相信默认的最大执行时间是30秒。您可能需要在php.ini中增加它。您可能还需要增加内存限制。不是:)不是因为最大执行时间或内存限制,我必须稍微研究一下这个问题,但我真的确定不是从那里开始的…我发现了问题,我的机器是一个0.5 gb的VPS,阵列内存已满。。。我必须使用另一台机器,如果我想处理更多的网址,如果不是,我必须分裂成多个文件,并采取一个接一个。