システムエラーの回避法とタイムアウトを早める方法
ブログのRSSを取得し最新5件の記事タイトルを取得するスクリプトを作りました。
スクリプト自体は問題なく動いているのですが、RSSを発行しているサイトがダウンした場合にちょっと困った事が…
問題1:タイムアウトが長すぎる
スクリプトは2回読んでいて、RSSのサーバーがダウンしている場合、タイムアウトしないと画面が表示されません。
タイムアウトが返って来るまでの時間は約6分です。
試しにfsockopenというのを使用してタイムアウトを5秒に設定したところ、タイムアウトは2分まで短縮されました。
タイムアウトが上手く動かないのは一体何故でしょうか?
10秒くらいで接続できなかったらタイムアウトさせて画面を全て表示させたいのですが、どうすればよいのでしょうか。
問題2:エラーを回避させてもシステムエラーになる。
システムエラーがあった場合、システムエラーの画面に飛ぶようになっています。
上記のブログでタイムアウトした場合、システムエラーとなり通常のページが表示されません。
関数に@をつけるとエラーメッセージは表示されないと教えていただきましたが、メッセージが表示されないだけでエラーには変わりありませんでした。
システムエラーとして認識させないためにはどうすればよいでしょうか?
現在のソースはこんな感じです。
$fp = fsockopen("www.hoge.jp", 5);
if(!$fp) {
return "タイムアウト\n";
} else {
//RSSの読み込み処理
}
アドバイスお願いします。