作者gpmm (銀色)
看板PHP
標題Re: [請益] 替代session的方案
時間Sat Jun 14 13:36:11 2008
※ 引述《Song6Lin (Song6.Lin)》之銘言:
: 主要是執行a.php, 然後向b.php發送要求,b.php回傳。
: 想把字典檔("dict.dic")讀取之後的內容存在某個array之中,
: 希望之後那個array variable一直存在,
: 第二次之後查詢就可以快速很多。
: 因為每次都去重新讀取檔案,再去查詢,蠻耗時間的。
: 目前是用了$_SESSION的方式,可以正確讀取,
: 第一次載入字典檔,第二次查詢字典檔,結果是正確的,array有保存下來。
: 但是效率....很差....好像是因為$_SESSON['DICTS']太大的關係,
: session_start()就耗了相當大的時間。
因為一般普通的 session 實做,也是將資料寫入檔案,再從檔案讀出,
所以和每次手動從 dict.dic 進行讀檔意思是差不多的,
小弟建議您可以先對字典檔做結構化的整理,分散成多個檔案,
也許可以提高一些效率。
譬如以 e 開頭的前三位字母整理至 dict/e/l3/dict.dic 裡
四位、五位、六位及以後也比照辦理,
dict/e/c4/dict.dic
dict/e/c5/dict.dic
dict/e/m6/dict.dic
這樣的分散方式可以多少讓你的檔案讀取縮小化,
其實還有最狠的,就是把所有文字拆成對應的檔案,各自有各自的 dict.dic
像 dict/e/example.dict.dic
dict/e/extra.dict.dic
不過應該檔案結構會很肥啊 XDD
如果您的需求是要做動態 input suggestion,
那麼也是最好有一份(或拆開的多份)索引檔提供索引比對使用,
當使用者按下 enter 要求查詢目標字串時,
才針對該字串做詳細解釋檔案的讀取,
其實這種還是建議使用資料庫來做比較適合 @@
十幾萬筆的資料應該不至於效能太差,
而且字典本身還滿適合做資料庫的(字串就可以做 primary key 了)
如果這樣子還是覺得效率不夠的話,
建議可以使用 memcache 來實做,應該也會有不錯的效能表現。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.168.233.197
※ 編輯: gpmm 來自: 118.168.233.197 (06/14 13:37)
推 Song6Lin:後來我把字典檔簡單建了一個快速索引,順暢多了^^ 06/14 14:51
→ Song6Lin:謝謝gpmm大大~~ 06/14 14:51