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

參考資料


回應 (Leave a comment)