2011-04-28 48 views
3

我正在从正在工作的外部服务器加载XML文件。但是,如果在加载文件时该文件不存在或出现其他问题,我该如何收到错误消息?PHP simplexml_load_file - 错误处理

这是我的代码:

$xml = simplexml_load_file('http://api.example.com/2/image/' . $myhash . '.xml'); 

而且I'ld想知道什么是最好的做法,如果这样的事情发生。 我是否应该只显示“错误 - 请重新加载页面”的错误消息,还是应该直接将用户重定向到“主页”或404页面?

感谢您的提示。 (我只找到实例在同一台服务器上的文件)

回答

4

从着眼于功能的PHP文件simplexml_load_file

你可以只是这样做:

$xml = simplexml_load_file('http://api.example.com/2/image/' . $myhash . '.xml'); 
if ($xml === false) { 
     // error so redirect or handle error 
     header('location: /404.php'); 
     exit; 
} 
else { 
    // process xml 
} 

我真的不知道你试图从这个XML中获得什么,但是如果它不是第一次工作和错误,那么告诉用户它不起作用的意义是什么,请重新加载页面。

我建议要么重定向到404错误页面,要么显示错误消息,例如“意外错误 - 请稍后重试”,然后将其记录到错误日志或通过电子邮件告诉您的错误

+0

更多使用[curl](http://php.net/curl)的理由,以便您可以分辨HTTP状态:500或状态:404之间的差异。 – 2011-04-28 15:39:12

+0

通过使用您的示例,我收到此错误消息:'警告:simplexml_load_file - 无法打开流:HTTP请求失败! '和'警告:不能修改标题信息 - 已经发送的标题' – Michael 2011-04-28 16:12:25

+1

@Michael:用'@'预先添加simplexml_load_file()来禁止警告。 – Narf 2011-04-28 21:22:00