共享内存


php有两套使用共享内存的函数,一套是System V IPC函数的封装,另一套是shmop。这两个都无需安装外部库文件。前者只能在linux下使用,而且要使用它的话,在安装php的时候要加上–enable-sysvshm选项;而后者在linux和windows(win2k之后的系统,win98不支持)都可以使用,但在windows的时候,只有在php是ISAPI运行模式才能正常工作,在安装php的时候要加上–enable-shmop。 这两套函数的使用相当简单,下面分别给出简单的用法,更详细的信息可以参考php手册。

范例

// Create a temporary file and return its path $tmp = tempnam('/tmp', 'PHP');
 // Get the file token key $key = ftok($tmp, 'a');
 // Attach the SHM resource, notice the cast afterwards $id = shm_attach($key);

if ($id === false) {
    die('Unable to create the shared memory segment');
}
 // Cast to integer, since prior to PHP 5.3.0 the resource id // is returned which can be exposed when casting a resource // to an integer $id = (integer) $id;

var_dump($id);

exit;

$key = 555; //创建key为555的共享内存 $size = 2 * 1024 * 1024; //2M $shmid = shm_attach($key, $size, 0755);

shm_put_var($shmid, $key, $_SERVER);

$value = shm_get_var($shmid, $key);

print_r($value);
exit; //shm_detach($shmid);  //销毁共享内存$key的值 $shmid = shm_attach($key, $size, 0755);
shm_remove($shmid);
shm_detach($shmid);
 //查看共享内存的信息 
//@exec(\'ipcs -a', $output); //var_dump($output);

参考链接