續談PHP調整

DATE: 07/31/2004 03:10:19 PM

前一篇提到SESSION的問題
馬上被指正SESSION不是只能用檔案儲存
(這我知道阿…)
花了不少力氣翻書查網頁之後
把詳細一點的資料記錄下來

在php.ini中session.save_handler選項的參數是string
也就是可以自己打
但是file是預設值 意指 將SESSION變數儲存為檔案
(預設路徑為/tmp,可透過session.save_path修改)
也可以使用MM模組將SESSION存到SHARED MEMORY
網址在http://www.ossp.org/pkg/lib/mm/
但是要手動把MM模組COMPILER進APACHE
另一個是user 自訂
最常用的是存到DATABASE中,但是要自己寫程式把他寫到DATABASE
關於這部分有許多書籍與網頁會有範例,這裡就不再提
可以參考歐萊禮英文網站上這篇文章

http://www.onlamp.com/pub/a/php/2001/04/26/sessions.htm

SESSION在PHP中是一個陣列
SESSION ID是陣列的名稱
命名標準是根據時間與亂數,以便成為一個UNIQUE的ID
註冊到SESSION的變數名稱是鍵(KEY)
呼叫時使用$_SESSION[KEY](別使用register_global)

這個陣列是每一個USER都會產生
所以SESSION多一個變數所消耗的記憶體就多了許多
在線上人數多的網站會造成很大的負擔
所以使用SESSION的『範圍』是需要再設計階段就考量的

前一篇有提到過減少DISK I/O是提高速度的準則
但是除了DISK I/O ,資料庫的操作也是很慢的(相對程式的執行來說)
妥善規劃資料庫與查詢語法也會提升執行速度
但是這部分的內容足夠出專書討論了
請參考各家DATABASE的書籍

用來加速PHP的方法常見的有ZEND跟CACHE
ZEND指的是Zend Optimizer模組
我沒裝過,所以也沒啥建議可以給
CACHE就是…CACHE
PHP的CACHE有非常多的套件可以選
各家有各家的特色
但是使用CACHE必須要額外的規劃
這部分也需要參考各家的手冊及說明文件

但是我個人認為加速的手段不能當作首選
加速器無法彌補不恰當程式規劃所造成的效能低落
白話一點就是
過多的DISK I/O或過慢的SQL query
使用加速器也沒多大幫助
(依據使用的恰當與否雖然可以提高相當速度但是要犧牲相當系統資源去製造CACHE)

PHP相較其他語言,結構較鬆散
對資料型別的檢查與要求比較少
但它還是一個語言
使用其他程式語言所需注意的地方
在PHP上一樣要注意
像是記憶體的使用
要知道WEB程式的使用
同時跑出上百個INSTANCE是很平常的
額外耗用10K記憶體 100個USER同時上線就是多消耗1M
目前的SERVER通常都是1G-2G的RAM
實在不是有很多揮霍的本錢

其實TUNE程式真的是很無聊而痛苦的事情
難度高、成就感又低,標準的吃力不討好
(改完的CODE還是別人的創作…..)
為什麼在寫的時後不先考慮清楚…喵嗚
總是會有個大爛攤留給接手者
這樣的作法 寫上幾百個CASE也不會有進步

廣告

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s