RSS配信スクリプト書き換えました
色々なミスを乗り越えてオリジナルランキングRSS配信スクリプト改良。
改良って言っても現行サービスに流すわけじゃありません。
サイトの引越し先で使います。
URL公開はサイト完成まで待ってね。
前置き
DBに放り込む値の生成クラス。
動画レベル等の算出メソッドの実引数にAPIの値使ってるんですが一部キャスト忘れで
こんなことになってた。
<?php //$xmlはsimple_xml_file()で取得したXMLオブジェクト// $view = $xml->channel->view; //7桁の数値 $comment $xml->channel->comment; //8桁の数値 print var_dump($view>=$comment); //True ?>
何で7桁の数値と8桁の数値比較して7桁の方が大きいって出るんだよ!って思ったら
$xmlに入ってるXMLオブジェクトをint型にキャストしてなかった。オブジェクト同士比較してたからTrueになっちゃったのかー。
とは言われてもなんか腑に落ちないですけどね。 ==なら納得しますけど。
以下改良点
URL指定を分かりやすく。
もう現行のURL文字列意味わかんね。
-
- cf_mvr→hot
- p_cf_mvr→pickup
- mrd→mlst_rate
- rand→random
他は変化なし。
今旬の動画であるcf_mvr・・・なんかの頭文字1文字ずつとったんだと思う。
もう俺にもわからんです。
処理はええ
キャッシュのおかげ。
現行みたいに似非キャッシュじゃなくてSmartyのキャッシュ使ってる。
RSS全種毎時更新
これもキャッシュのおかげね。ランダム取得も毎時更新。
gdgdと駄弁り
現行スクリプトは全て1ファイルでやってるからDB倒れたらエラー吐かれてアウト。
RSSはリアルタイム更新。無駄にね。
オリジナルランキングは似非キャッシュで多少負荷と表示速度考慮してるけどランダム表示はそう柔軟にはいかないですね。
時間が来たらCronから生成スクリプト動かしてXML生成して、ランキング表示には生成したXMLファイル読み込む。
原始的なやり方です。
あと、feedcreator.class.php使おうかなぁとか思ったけどニコニコのRSS2.0って少しフォーマットが特殊なんですよね。
それで残念ながら現行フォーマットでは再現できず結局自作。
PEAR::MDB2とSmarty使えばRSS配信スクリプトなんか簡単に作れますよ。
.phpと.tpl合わせても100行ちょっと。
配信するRSSの種類が1種類なら80行程度で済むんじゃないかな?
時間があれば簡単にチュートリアル記事でも書いてみようかな。
若干眠い中書いた記事。多分もう色々とひどいです。