SimpleXMLElementより速い?二回目以降が前回のアクセスから12時間以内だったらキャッシュを読みこむので超速。頻繁に更新がある場合は向かないかも。
関係ないけどDOMDocumentはxmlの生成も出来るみたい。あと他のコードを見ているとこまめに変数にする方がイイっぽい。例えばcount($rssArray)*10としてるところも$limit = count($rssArray)*10;にしてコメントに「取得件数に40件を設定」とか書いてあげるとわかりやすい。
require('Cache/Lite/Output.php');
// キャッシュの保存場所とキャッシュの生存期間を指定
$options = array(
'cacheDir' => '/tmp/cache',
'lifeTime' => 3600 * 12
);
$cache = new Cache_Lite_Output($options);
// 指定id のキャッシュが存在するかどうか
if(!($cache->start($_SERVER['REQUEST_URI']))) {
// startからendまでの出力内容をキャッシュする
// RSSを複数読み込む
$rssArray = array(
'http://blog.yusukenakanishi.com/feed/index.php',
'http://labs.yusukenakanishi.com/feed/index.php',
'http://twitter.com/statuses/user_timeline/3836311.rss',
'http://yusukenakanishi.tumblr.com/rss');
// 各要素を配列に格納する
$arrayLength = 0;
for($i=0; $i<count($rssArray); $i++) {
$dom = new DomDocument();
$dom->load($rssArray[$i]);
$xpath = new DomXPath($dom);
for($j=0; $j<10; $j++) {
$pubdate = $xpath->query('/rss/channel/item/pubDate');
$title = $xpath->query('/rss/channel/item/title');
$link = $xpath->query('/rss/channel/item/link');
$allArray[$arrayLength]["judge"] = date("Y/m/d/H/i",strtotime($pubdate->item($j)->nodeValue));
$allArray[$arrayLength]["day"] = date("Y/m/d",strtotime($pubdate->item($j)->nodeValue));
$allArray[$arrayLength]["title"] = $title->item($j)->nodeValue;
$allArray[$arrayLength]["link"] = $link->item($j)->nodeValue;
$allArray[$arrayLength]["list"] = "list-0" . $i;
$arrayLength++;
}
}
// 配列を日付順に並べ替える
foreach($allArray as $key => $row){
$data[$key] = $row["judge"];
}
array_multisort($data, SORT_DESC, $allArray);
// リスト表示
echo "<ol id=\"rssList\">\n";
for($k=0; $k<count($rssArray)*10; $k++) {
echo "<li class=\"" . $allArray[$k]["list"] . "\">";
echo $allArray[$k]["day"];
echo "<a href=\"";
echo $allArray[$k]["link"];
echo "\">";
echo mb_strimwidth(strip_tags($allArray[$k]["title"]), 0, 50, "...", "UTF-8");
echo "</a></li>\n";
}
echo "</ol>\n";
$cache->end();
}