2011-04-28 49 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