首先,如果这是有史以来最基本的问题,我想道歉!我对PHP不太好,但我正在学习。
我找不到解决方案,甚至无法理解为什么它一直出错。我想知道为什么发生这种情况
我正试图从Twitter帐户获取最新的两条推文。我不想使用我不理解的大量(现有的,我知道的)类或代码。所以我自己尝试了以下内容:
$timeline = "http://twitter.com/statuses/user_timeline.xml?screen_name=Mau_ries";
$data = file_get_contents($timeline);
$tweets = new SimpleXMLElement($data);
$i = 0;
foreach($tweets as $tweet){
echo($tweet->text." - ".$tweet->created_at);
if (++$i == 2) break;
}
当我第一次运行此代码时,我从我的推文中获得了文本,但是当我刷新页面时,我有时会收到以下错误:
警告: file_get_contents(http://twitter.com/statuses/user_timeline.xml?screen_name=Mau_ries)[function.file-get-contents]:无法打开流:HTTP请求失败!第88行的 / path / to / file 中的HTTP / 1.0 400错误请求
致命错误: /public/sites/www.singledays.nl/tmp/index中带有消息'字符串无法解析为XML'的未捕获异常'异常'。 php:89 Stack trace:#0 /public/sites/www.singledays.nl/tmp/index.php(89):SimpleXMLElement-> __ construct('')#1 {main}抛出 / path /到第89行的/ file
第88行& 89是这些:
$data = file_get_contents($timeline);
$tweets = new SimpleXMLElement($data);
真的很奇怪。有时它会起作用,有时候不起作用。
有人知道这个问题和/或解决方案吗?为什么错误似乎是随机发生的(尽管它现在已经错误了一段时间了)?
谢谢!
答案 0 :(得分:0)
$timeline = "http://twitter.com/statuses/user_timeline.xml?screen_name=Mau_ries";
$data = @file_get_contents($timeline);
if($data){
$fh = fopen("cache/".sha1($timeline),"w");
fwrite($fh, $data);
fclose($fh);
}else{
$fh = @fopen("cache/".sha1($timeline),"r");
$data = "";
while(!feof($fh)){ $data = fread($fh, 1024); }
fclose($fh);
}
if(!$data) die("could not open url or find a cache of url locally");
$tweets = new SimpleXMLElement($data);
$i = 0;
foreach($tweets as $tweet){
echo($tweet->text." - ".$tweet->created_at);
if (++$i == 2) break;
}
每个人都说调试你应该真的将结果缓存到文件中,如果无法下载,那么使用缓存,上面的代码将为你做。