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)