2007年8月11日 星期六

flickr comment reader (php version)

上班上的頗煩,

所以 jeff 前幾個星期給了我一個作業,

他說他每天在 flickr 上面, 翻閱所有好友的 comments 很累, 因為必須要一個一個去看,

flickr 介面只會提供, 你在別人那邊的留言, 別人在你這邊的留言,

不會提供你朋友在別人那邊的留言, 更不用說別人在你朋友那邊的留言... (有點繞舌)

所以他想要有一個介面, 想要一次撈出所有的朋友名單, 一次就把這些 comment 從最新排到最舊, 省的花很多時間去找尋.

大概中午十一點多接到這個作業, 約下午六點前, 已經把 proto type 做給他了.

用 php + flickr api + mrss + curl 就完成.

不過第一版非常慢, 他是拉出好友名單之後, 一個一個去拉到 rss, 然後根據時間排序, 過濾掉重複的.

才顯示出來,

http connection 數量約是, (好友數量 * 2) + 2 + 1

然後一個一個排隊連線, 假設我有 25 個好友,

我的連線數量就是 25 * 2 + 2 + 1, 1 是原本的 flickr api rest, + 2 是我也要拉到我自己的.

這樣會有 53 個 connections, 每個只花一秒鐘的話, 從 request 這頁開始, 我要等 53秒以上, 頁面才會出現, 因為還要加上排序等處理.

因此第二個版本, 使用了 curl 特殊搞法, multi interface, 他可以一瞬間, 就把要開的 connections 一次開滿, 一次拉回來.

這個改法, 我自己約 25 個好友的狀況下, 從 53 秒以上, 拉低到 4 ~ 5 秒就出現結果.

但是還是有瑕疵, 因為每次, 都要真實的開那麼多 connections 出去, 可能一拉就是 500k, 但是經過過濾之後,

只有吐給使用者 30k 的資料而已.

怎麼辦呢? cache 吧. php 可以直接使用 apc, 將每次的 rss result 存個幾分鐘,

當使用者短時間內重複拉取同樣的 rss 時, 可以直接從 cache 中拉出, 不必浪費資源出去抓.

這次目前 php 版本的狀況, 也順便感謝某同事的支持, 弄了個漂亮簡單的頁面, 讓東西瞬間看起來有質感多了.

該版本的 url 是 http://www.alive.tw

沒有留言: