作者GALINE (天真可愛CQD)
看板PHP
標題Re: [請益] simplexml_load_file讀不到資料的問題
時間Mon Apr 13 01:39:58 2015
推 poeta: 可是好像又不是語法的問題,因為還是直接報錯: 04/10 18:11
→ poeta: HTTP 錯誤 500.0 - Internal Server Error 04/10 18:11
→ poeta: 讀取的網站一多就會變成那樣 04/10 18:12
用「simplexml_load_file 500」搜尋,第一篇是
http://stackoverflow.com/questions/1436614
從這篇看起來,simplexml_load_file() 只能處理 200 的回應
對方如果噴了 500 回來就會噴 warning
從這個方向來考慮,想出的解法是「用某個不管 200 還是 500 都能動的東西來抓資料」
例如說...curl,也就是連結中 RageZ 的回答
------------------------------------------------
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$xml = curl_exec($ch);
$a = simplexml_load_string($xml);
------------------------------------------------
是說要自己做 RSS reader 去爬別人的 RSS 應該還會踩到很多地雷,加油...XD
不過如果目的只是想讀 RSS 的話
我建議用 feedly,或者不想用網路服務可以用 Thunderbird。
--
頂天立地:愛孩子就要支持蘿莉控
http://goo.gl/Bha7e
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.27.59.43
※ 文章網址: https://www.ptt.cc/bbs/PHP/M.1428860405.A.3E3.html
推 y2468101216: 推 04/13 10:18
※ 編輯: GALINE (61.218.242.230), 04/13/2015 10:49:23
推 poeta: 謝謝指導,我昨天把他放到阿帕契裡面試試看,結果報錯是: 04/13 22:35
→ poeta: Maximum execution time of 30 seconds exceeded 04/13 22:35
→ poeta: 後來查到解決方法是改php.ini裡的「max_execution_time」 04/13 22:36
→ poeta: 也沒有完全解決問題,資料錄裡面的確匯入了一些xml,可是 04/13 22:37
→ poeta: 程式沒有跑完,我再研究看看好了,謝謝。 04/13 22:37
從 web server 那邊執行的話會有時間限制
如果你是用 linux 或 mac,直接在指令行「php reader.php」就可以
還可以迴圈裡面「echo $url, "\n";」確認執行的進度
windows 我不確定,不過應該有類似的作法可以在指令列直接執行
※ 編輯: GALINE (61.227.55.198), 04/14/2015 23:57:48