Php 如何检查simpleXML是否为空
因此,我构建了一个包含multi-curl的脚本来验证来自更多URL的XML和extrac$XML->loc,但是当他发现任何其他非XML文件时,我的脚本崩溃(停止)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 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,阵列内存已满。。。我必须使用另一台机器,如果我想处理更多的网址,如果不是,我必须分裂成多个文件,并采取一个接一个。