少し前に、ブログのサイドメニューに、RSS更新情報や、はてなアンテナを
表示するようにしたのですが、どうも今晩は「はてなアンテナ」の調子が
おかしいようで、うちのブログの表示自体も遅くなってしまっていました。
そこで、一旦、再度メニューの表示をオフにして、タイムアウトの処理を
組み込むことに。
ただ、RSSの処理部分は既存の関数を利用していますので、事前にファイル
チェックをおこなう処理を別個に入れることにしました。
$server = “a.hatena.ne.jp”;
define(“TIMEOUT_SECOND”, 1);
$fp = @fsockopen($server, 80, $errno, $errstr, TIMEOUT_SECOND);
if ( !$fp ) {
//タイムアウトエラー
$rss = “”;
return $rss;
}
else {
fwrite($fp, “GET http://”.$server.”/macbs/rss HTTP/1.0\r\n\r\n”);
stream_set_blocking( $fp, TRUE );
stream_set_timeout($fp, TIMEOUT_SECOND);
$info = stream_get_meta_data($fp);$txt .= fgets($fp, 2000);
$info = stream_get_meta_data($fp);
fclose($fp);if ( $info[‘timed_out’] ) {
//タイムアウトエラー
$rss = “”;
return $rss;
}
}
まぁ、内容は見ての通り(^^;ということで、とりあえずオープンしてみて、
ちらっと読んでタイムアウトだったら、処理をやめるという具合です。
PHPのバージョンが新しければ、fopenで処理できるのですが、fsockopenを
使ったので、ちょっとややこしくなりました。
はてなアンテナが復旧してくれるのが一番ですが、こういうことは
他のRSSでもありうる問題ですし、この機会に対処できて良かったです。
PHP 逆引きレシピ (PROGRAMMER’S RECiPE) by G-Tools |
(当サイトでは、Amazonアソシエイトをはじめとした第三者配信のアフィリエイトプログラムにより商品をご紹介致しております。)