2012
Mar
05
share memory 是指一個記憶體空間,可以讓多個程序同時存取,在 php 中就有兩套處理 share memory 的 extension ,一套是 shmop ,另一套是 sysvshm , share memoey 有什麼功用呢,想到 memory 當然就想到效能囉,因為資料是存在 memory 中,資料存取的效能比起讀檔,可是快上一大截。
shmop 與 sysvshm
shmop 可以在 windows 及 linux 上使用,他的 memory 空間管理必需由工程師自已去處理,也就是說當儲存的資料大小超過 memory size 時,工程師得自已處理 memory 的擴張。
sysvshm 只能用在 linux ,這一套 share memory 比較容易使用,我們只能指定存取的 key 與 value 即可,完全不用理他的 size ,sysvshm 會自動幫你做資料的管理。
sysvshm extension安裝
在 PHP 理安裝 sysvshm 非常的簡單,首先下載 php 的原始碼,像我目前是使用 php=5.2.17 ,所以 sysvshm extension 的路徑就在 「php-5.2.17/ext/sysvshm」,安裝過程如下。
- cd php-5.2.17/ext/sysvshm
- phpize
- ./configure
- make
- sudo cp modules/sysvshm.so /php_extension/ :(複製 so 檔到 php extension 路徑)
- 在 php.ini 中加入 extension=sysvshm.so
- 最後 restart apache 就行了
sysvshm 是使用 linux 內建的 IPC 來做程序之間的溝通 ,IPC(Inter-process communication) , 接下來介紹 ipcs 的一些指令
- ipcs:檢查目前有那些 share memory
- ipcrm -m 98307 刪除 share memory