練習開發 php extension - Tokyo Cabinet

 Fri, 22 Jan 2010 17:16:22 +0800

之前想要熟悉一下PHP Extension的開發,剛好看到LightCloud,他是基於另外一個專案Tokyo Tyrant,Tokyo Tyrant的底層則是一個高速Key-Value pair資料庫,叫做Tokyo Cabinet。TokyoTyrant已經有不少專案支援,包括純php以及extension,但是Tokyo Cabinet似乎還沒有,所以就拿他來開刀。

結果在這裡:http://www.fillano.idv.tw/tokyocabinet3-0.1.src.tar.gz

其實我之前是根據TokyoCabinet 1.4.X的TCADB這個介面來開發,不過最近都在使用Ubuntu,他安裝的套件是1.3.X版本的,之前許多功能不能使用...所以就先把他改成與1.3.X相容,也稍微調整一下程式碼再釋出。

這個Extension主要是提供幾個東西:TokyoCabinet的Hash及B+ Tree格式的資料庫檔案及Hash的記憶體資料庫的支援,可以開啟(如果apache有讀寫權限,那檔案不存在時會產生檔案)、寫入、查詢、讀出等功能。另外雖然可以支援記憶體資料庫,但是用php extension的方式使用不太有意義,我當初寫這個extension除了練習之外,還順便拿來做檔案資料庫來測試使用。

要安裝,必須先安裝php的developer功能,解開檔案後,在目錄中執行phpize,然後./configure -> make -> make install等。mytest目錄中有兩個php檔案可以用來做測試。當然,在安裝前要先裝好tokyocabinet。

Tokyo Cabinet的key與value都是binary safe的,而且不限長度,所以拿來存放大檔案來做streaming也許是個不錯的用法。

因為是習作,所以歡迎指教囉,有些地方其實不太確定就硬上了,心有點虛......


2010-1-22 17:22 補充

除了透過memcached的協定來存取TokyoTyrant,PECL上面已經有extension支援TokyoTyrant,作者還在持續更新中:
http://pecl.php.net/package/tokyo_tyrant
開發的主站在github:
http://github.com/mkoppanen/php-tokyo_tyrant
作者的blog有不少好物:
http://valokuva.org/