php操作共享内存

在开发一套程序过程中需要遇到Application变量,网上有很多方法,现汇总如下: 1、shmop http://docs.php.net/manual/zh/book.shmop.php 说明: PHP功能, 共享内存功能函数, 此处用于PHP直接操作内存, 提供高速数据操作 开启: windows下,php.ini中取消 ;extension=php_shmop.dll 这行的行首分号,加载shmop扩展;Linux/unix下,重新编译php,加入--enable--shmop 选项。 几点说明: 由于win,linux的内存管理机制不同,因此php也需要使用不同的扩展库来操作 php的共享内存函数功能较弱,只能整块的读取和写入 文章只是展示php有内存操作,实际使用还是memcached吧 1.这两套函数都是简单易用的,shmop的唯一好处是可以在windows下使用,在linux下的话推荐使用shm_那套函数,因为那套函数在插入、更新以及读取共享内存里面的变量相当方便,而shmop需要自己来规划共享内存的存储结构,应用起来稍微复杂一点。此外,上面的例子里面我直接用数字12345作为共享内存的key,实际上,更为标准的做法是使用ftok函数来把一个路径转成ipc的key。具体做法可以参考php手册。   2.在使用shmop时,如果使用完成后没有进行shmop_delete()操作,则下次对共享内存变量值的写入会有问题出现,如果前次写入的长度〉下次写入的长度,则只覆盖前面的,多余的内容保留。反之,如果前次写入的长度〈下次写入的长度,则多余的内容会自动追加到后面。   3.共享内存时需要的key及变量均为int类型。   =================================   相关方法介绍:   shm_attach   打开建立共享内存空间。   语法:intshm_attach(intkey,int[memsize],int[perm]);   返回值:整数   函数种类:操作系统与环境   内容说明:本函数用来打开或者建立共享内存空间。参数key为这部分的键。参数memsize可省略,表示所需最小的内存空间(单位为byte位组),默认值在php3.ini或php.ini中的sysvshm.init_mem配置,若无配置则为10000bytes。参数perm亦可省略,为该内存空间的使用权限,默认值为666。返回值为共享内存的id值,可供程序使用。   shm_detach   中止共享内存空间链接。   语法:intshm_detach(intshm_identifier);   返回值:整数   函数种类:操作系统与环境   内容说明:本函数用来中止与共享内存空间的链接。参数shm_identifier即为欲停止部分的共享内存id值。   shm_remove   清除内存空间。   语法:intshm_remove(intshm_identifier);   返回值:整数   函数种类:操作系统与环境   内容说明:本函数用来清除共享内存空间的所有资料。参数shm_identifier即为欲停止部分的共享内存id值。   shm_put_var   加入或更新内存空间中的变量。   语法:intshm_put_var(intshm_identifier,intvariable_key,mixedvariable);   返回值:整数   函数种类:操作系统与环境   内容说明:本函数可用来增加或者修改内存空间中变量值。参数shm_identifier为欲增加修改的共享内存id值。参数variable_key为欲增加修改的变量名称键。参数variable为变量的内容,变量的类型可以是倍精确数(double)、整数(integer)、字符串(string)或者是数组(array)。   shm_get_var   取得内存空间中指定的变量。   语法:mixedshm_get_var(intshm_identifier,intvariable_key);   返回值:混合类型资料   函数种类:操作系统与环境   内容说明:本函数可用来取得内存空间中指定的变量值。参数shm_identifier为欲取得的共享内存id值。参数variable_key为欲取得的变量名称键。返回值即为指定变量键的值。   shm_remove_var   删除内存空间中指定的变量。   语法:intshm_remove_var(intid,intvariable_key);   返回值:整数   函数种类:操作系统与环境   内容说明:本函数可用来删除内存空间中指定的变量值。参数shm_identifier为欲除去的共享内存id值。参数variable_key为欲删除的变量名称键
posted @ 2010-11-09 15:09  刘光明  阅读(862)  评论(0编辑  收藏  举报