Twitter APIの検索結果をCacheしてから表示する練習
前エントリの「phpでTwitter APIの検索結果を取得してみる練習」では、表示する度にTwitter APIにリクエストを送ってしまうので、こちらで一度キャッシュしてそれを表示しましょうという練習です。
このサイトを置いているcoreserverでは、キャッシュするのにあらかじめPearのCache_Liteがインストールされているらしいので、そのCache_Liteを使用しました。
<?php
require_once ‘Cache/Lite.php’; // Cache_Liteのプログラムを読み込む
// 設定項目
$cacheOptions = array (
‘cacheDir’ => ‘./tmp/’, // キャッシュが保存される場所
‘lifeTime’ => 3600, // 指定した秒数はキャッシュを使う、nullにすると無期限
);
$url = “https://search.twitter.com/search.atom?q=%23keiba&lang=ja”;
$cacheId = $url;
//Cache_Liteオブジェクト生成
$objCache = new Cache_Lite($cacheOptions);
//指定したIDの有効なキャッシュデータがキャッシュディレクトリに存在するかどうかを返す。
if ($cache = $objCache->get($cacheId)) {
//キャッシュデータを変数にセット
$xmlStr = $cache;
echo date(“y/m/d h:i:s”, $objCache->lastModified()) . “のCacheから表示しています。<br />”;
} else {
// キャッシュがなかったとき、lifeTimeより古くなっているときはここで処理
$xmlStr = @file_get_contents($url);
//キャッシュ保存
$objCache->save($xmlStr,$cacheId);
echo “APIより取得しました。<br />”;
}
$rss = simplexml_load_string($xmlStr);
//以下は前回と一緒
$title = $rss->title;
?>
<html xml:lang=”en-US” lang=”ja-JP”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″/>
<title><?php echo $title; ?></title>
</head>
<body>
<h1><?php echo $title; ?></h1>
<?php
foreach ($rss->entry as $entry) {
echo “<img src='” . $entry->link[1]{“href”} . “‘ />”;
echo “<h2><a href='” . $entry->author->uri . “‘>” . $entry->author->name . “</a></h2>”;
echo “<p>” . $entry->content . “</p>”;
}
?>
</body>
</html>
今回の修正は、前回のエントリでも参考にさせて頂いた、caraldo.netさんの、
PearのCache_Liteを使って、TwitterAPIから取得したXMLをキャッシュさせる@デザイナー
を参考というかマルっとパクらせていただいてます。(caraldo.netさん多謝。)
詳しくは、こちらが親切で分かりやすく解説されていますので、ぜひこちらをご覧ください。
あまりにもパクリ過ぎてよく理解できてない部分も多いので、
Cache_Liteの日本語版マニュアル
こちらも読んで勉強したいと思います。。。
その他、こちらから検索してみてください。
■関連記事
phpでTwitter APIの検索結果を取得してみる練習
Dropbox新規登録しませんか?
このリンクから新規登録で、通常の2GB+250MBが無料になります。
私も+250MBもらえるので、登録まだの方ぜひご協力お願いします。
https://db.tt/8yPaC46