【发布时间】:2014-08-14 08:48:59
【问题描述】:
我正在读取一个 XML 文件并使用 new simplexmlelement 加载它。
有时,由于 XML 文件在远程服务器上,可能需要很长时间才能加载,有时如果远程服务器关闭,则根本无法加载。
最初我是这样加载 XML 的:
$url = file_get_contents('PATH_TO_XML');
$xml = new SimpleXmlElement($url);
所以我想想出一种方法,如果 XML 文件响应时间过长,或者根本无法加载,PHP 会绕过它,加载网站的其余部分,然后产生一个简单的错误消息,无论站点上引用 XML 文件的任何位置。
所以我上网阅读,并将其添加到代码中:
$context = stream_context_create(array(
'http' => array(
'method' => 'GET',
'timeout' => 10,
)
));
$url = file_get_contents(PATH_TO_XML', false, $context);
$xml = new SimpleXmlElement($url);
但我的问题是,即使这样,在我的 WAMP 环境中运行时我也会收到以下错误:
Warning: file_get_contents(http://www.inveroak.co.uk/readerimages/livepanel/91221.xml): failed to open stream: HTTP request failed! HTTP/1.1 503 Service Unavailable in C:\wamp\www\clairvoyant\extras\get-readers.php on line 10
Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML' in C:\wamp\www\clairvoyant\extras\get-readers.php on line 11
Exception: String could not be parsed as XML in C:\wamp\www\clairvoyant\extras\get-readers.php on line 11
get-readers.php #10:
$url = file_get_contents('http://www.inveroak.co.uk/readerimages/livepanel/91221.xml', false, $context);
get-readers.php #11:
$xml = new SimpleXmlElement($url);
我有什么遗漏吗?我是否需要调整网站其他地方的参考点?
【问题讨论】: