作者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://webptt.com/cn.aspx?n=bbs/PHP/M.1428860405.A.3E3.html
1F:推 y2468101216: 推 04/13 10:18
※ 编辑: GALINE (61.218.242.230), 04/13/2015 10:49:23
2F:推 poeta: 谢谢指导,我昨天把他放到阿帕契里面试试看,结果报错是: 04/13 22:35
3F:→ poeta: Maximum execution time of 30 seconds exceeded 04/13 22:35
4F:→ poeta: 後来查到解决方法是改php.ini里的「max_execution_time」 04/13 22:36
5F:→ poeta: 也没有完全解决问题,资料录里面的确汇入了一些xml,可是 04/13 22:37
6F:→ 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