10/17にRSSサーバ不安定のため天気予報を休止しましたが、そのサーバも翌日には復活していました。それでしばらくログイン時のみ表示するようにして様子見をしていましたが、安定して表示しているようです。ということでせっかく作ったものですし、天気予報を再開することにしました。
ただし前回のようにRSSサーバとの接続エラーのためにこのBlogにアクセスできないということが起こら無いように保険をかけたいと思います。
そのためにRSSの取り込みに使用しているMagpieRSSを若干変更しました。rss_fetch.incのfetch_rss($rss)関数に次の1行追加します。
キャッシュにデータが保存されていてかつキャッシュの有効期限が切れていたときには、RSSサーバにアクセスする前にキャッシュを保存し直して有効期限を更新しています。これでRSSサーバアクセス時に何らかのエラーが起こって、その後の処理が行われなかったとしても、次アクセスは再びキャッシュの有効期限内となりますのでRSSサーバにアクセスに行かないはずです。すなわち、問題が起こったとしてもキャッシュの有効期限が切れた直後のアクセスのみで、その後はまた有効期限が切れるまで(1時間に設定)は普通にアクセスできるはずです。ただ実際に問題が起こっておりませんので確認はできておりませんが。
ただし前回のようにRSSサーバとの接続エラーのためにこのBlogにアクセスできないということが起こら無いように保険をかけたいと思います。
そのためにRSSの取り込みに使用しているMagpieRSSを若干変更しました。rss_fetch.incのfetch_rss($rss)関数に次の1行追加します。
// setup headers
if ( $cache_status == 'STALE' ) {  // 有効期限ぎれ
$rss = $cache->get( $url );
if ( $rss->etag and $rss->last_modified ) {
$request_headers['If-None-Match'] = $rss->etag;
$request_headers['If-Last-Modified'] = $rss->last_modified;
}
$cache->set($url, $rss); // 追加
}
if ( $cache_status == 'STALE' ) {  // 有効期限ぎれ
$rss = $cache->get( $url );
if ( $rss->etag and $rss->last_modified ) {
$request_headers['If-None-Match'] = $rss->etag;
$request_headers['If-Last-Modified'] = $rss->last_modified;
}
$cache->set($url, $rss); // 追加
}
キャッシュにデータが保存されていてかつキャッシュの有効期限が切れていたときには、RSSサーバにアクセスする前にキャッシュを保存し直して有効期限を更新しています。これでRSSサーバアクセス時に何らかのエラーが起こって、その後の処理が行われなかったとしても、次アクセスは再びキャッシュの有効期限内となりますのでRSSサーバにアクセスに行かないはずです。すなわち、問題が起こったとしてもキャッシュの有効期限が切れた直後のアクセスのみで、その後はまた有効期限が切れるまで(1時間に設定)は普通にアクセスできるはずです。ただ実際に問題が起こっておりませんので確認はできておりませんが。
No comments yet
Add Comments
Trackbacks
Trackback URL