前提としてPHPで複数のRSSを取得して一旦JSON化してAngularJSで呼び出して表示するアンテナサイトを作ったりしていました。
そこで毎回ページが呼び出される度に、RSSを取得してーなんかしていたら、RSSを提供しているサイトに多大なサーバー負荷がかかってしまうし大迷惑だろうなと思ったのと、毎度RSSを読みに行っていたら表示が遅くなるのはわかっていたので、やっぱりキャッシュせななーということで、Cacheクラス PEAR Cache_Lite を使ってキャッシュファイルを生成してなんちゃらかちゃらとやろうとしてましたが、よくよく考えてみるとそんな大層なことをする必要がなかった。
要するに、もっと単純に考えたらええんとちゃうかと。
いくら複数サイトからRSSを取得するからといって、新しい記事が毎分ごとにドンドン追加されていくなんてないでしょ。
最新記事なんて30分ごとに取得できれば十分じゃないかな。
ということで、生成されたJSONをfiletimeで更新時刻を取得して、現在時刻との差を算出して、30分以上たっていたら、JSONを新しく生成しなおすという流れにしてみた。
// jsonの最終更新日の取得
$mod = filemtime("test.json");
// 現在日時を取得
$timestamp = time() ;
// jsonの最終更新日から現在時刻の差を算出
$interval = $timestamp - $mod;
if( $interval > '1800' ) {
// jsonの最終更新時間が1800秒(30分)経過していたなら上書きする処理
// ~略
} else {
// 1800秒(30分)経っていないなら何もしない
exit;
}
こういう感じで単純に解決しました。


