Archive for 9 月, 2007

9 月 28 2007

找個counter來用用

Published by under wordpress

找一個可以統計文章的 counter 來用用, 有找到一篇文章介紹: Views counter for WordPress, 於是就進行安裝, 由於目前系統環境是在 php 4的關係, 所以使用了原作者建議的 vc.0.07版本使用.

該 plugin會在系統內建立一個table, 用來存放記錄, 內容為文章 id, 訪問者 ip, 以及該 ip 的訪問次數 views, table 內容如下:

table.png

所以文章會依設定狀況顯示出被多少訪客(visitors, viewers)訪問多少次(view times)的資訊. 習慣研究 plugin 寫法的我, 當然先看看該 plugin內容一下, 結果發現有個可以改善的地方, 就是 function get_stats($id) 這個 function, 原來的寫法是查詢兩次, 分別查出訪問次數及訪客數, 而其中訪問次數是查詢出來後再用迴圈做加總, 這個真的不是很理想的方式, 而第二個查詢則是用較正常的 count(*) 方式(aggregation function)來取得訪客數, 其實要改善的主要是第一個先用 sum(views) 改為aggregation function, 把加總的工作改由 db 運算, 再來就是兩個查詢都是用 aggregation function 的話, 可以再合併起來查詢, 更能節省資源, 於是就由原來的:

“SELECT views FROM ” . $table_prefix . “views_counter WHERE (id=’$id’)” + for-loop 取得 $cnt

“SELECT COUNT(*) FROM ” . $table_prefix . “views_counter WHERE (id=’$id’)” 取得 $viewers

改為

“SELECT sum(views),COUNT(*) FROM ” . $table_prefix . “views_counter WHERE (id=’$id’)” 同時取得兩個值.

一次取得兩個值, 並利用 wordpress 的 $wpdb->get_row 配合 ARRAY_N (取得值陣列)的參數調整直接 return 回去即可大幅改善效能. 這個部分我想再通知原作者調整, 讓該插件的效能更好, 取得作者同意後我再將更新的插件連結提供出來.

另外由於 wordpress 本身的設計良好, 所以這個插件在我目前使用的 wordpress mu 也都能順利正常地工作無誤, 若是有使用 wordpress mu的朋友可以放心使用.

[2007/10/1 1:07]
將 cryonyx 放在 google repo 的連結放上來: http://code.google.com/p/views-counter/
並新增版本 vc0.071: http://views-counter.googlecode.com/files/vc.0.071.zip

2 responses so far

9 月 27 2007

RSS2才有pubDate啦

Published by under wordpress

由於習慣用手機訂閱rss閱讀blog文章, 但一直覺得 wordpress怪怪的, 怎麼會沒有 pubDate 這個屬性, 因為在訂閱 wordpress 的 rss 時, 在手機上顯示的文章日期總是 0-0 0:00, 於是今天觀察一下的確是沒有這個屬性的, http://tim.diary.tw/rss 試看看, 每個 item 內就只有 title, description, link 三個屬性, 當然不能怪手機的 rss reader 沒有取得文章發表時間囉.

查了一下資料: http://codex.wordpress.org/Customizing_Feeds 發現原來 wordpress 提供了多種 rss 的格式, 一共有: RSS2.0, RSS0.92, RDF, Atom 多種格式, 使用方式就直接用 http://tim.diary.tw/rss2, http://tim.diary.tw/rss, http://tim.diary.tw/rdf, http://tim.diary.tw/atom 這樣就可以了, 然而在 http://tim.diary.tw/ 頁面上就有提供了

<link rel=”alternate” type=”application/rss+xml” title=”Another My Program RSS Feed” href=”http://tim.diary.tw/feed/” /> 

這個 link 了, 所以其實是我用 rss 的關係才造成沒有 pubDate 屬性啦, 真的是誤會一場啦. 趕快把手機上的訂閱連結更一下囉, 果然就有正常的發表時間功能了.

另外上面提供的 http://codex.wordpress.org/Customizing_Feeds 有許多可以自製的 rss 設定及方式, 是相當實用的一篇技術文章, 若是有要自訂特殊格式的需求, 應該很容易調整的!

No responses yet