shmop_* 函数在 Windows 2000 之前的版本不可用,且在 Windows 系统下,只有将 PHP 安装为服务器模式的前提下才能工作(CLI 和 CGI 模式下 shmop_* 函数无法工作),即将 php.ini 文件中的";extension=php_shmop.dll"选项中的";"删除,保存后重新启动 Apache 服务器.另外,本章其他函数仅支持 UNIX,Linux 系统.
<?php $shm_key=ftok(__FILE__,'t'); //获取路径下系统的进程标识符 $shm_id=shmop_open($shm_key,"c",0644,100); //建立一个共享内存 shmop_close($shm_id); //关闭共享内存 ?>
<?php $shm_key=ftok(_FILE_,'t'); //获取路径下系统的系统标识符 $shm_id=shmop_open($shm_key,"c",0777,100); //建立一个共享内存 $result=shmop_write($shm_id,'iwanc'.0); //写入内容到内存 shmop_delete($shm_id); //删除共享内存 ?>
<?php $shm_key=ftok(_FILE_,'t'); //获取路径下系统的进程标识符 $shm_id=shmop_open($shm_key,"c",0644,100); //建立一个共享内存 //$shm_key 必选参数.系统标识符,可以是十进制或十六进制 //"c" 必选参数.用于建立一个新的共享内存块或者尝试打开一个拥有相同系统标识符的内存,用作读写(其他还有"a","w","n") //0644 必选参数.共享内存的属性,同文件属性类似,必须以八进制形式 //100 必选参数.共享内存的大小,以字节为单位 ?>
<?php $shm_key=ftok(_FILE_,'t'); //获取路径下系统的进程标识符 $shm_id=shmop_open($shm_key,"c",0644,100); //建立一个共享内存 $result=shmop_write($shm_id,'爱玩网iwanc.com',0); //写入内容到内存 $shm_data=shmop_read($shm_id,0,6); //$shm_id:共享内存的标识符,从0位置开始读取,读取6个字节数量,返回"爱玩网" shmop_close($shm_id); ?>
<?php $shm_key=ftok(_FILE_,'t'); //获取路径下系统的进程标识符 $shm_id=shmop_open($shm_key,"c",0644,100); //建立一个共享内存 $result=shmop_size($shm_id); //返回"100" ?>
<?php $shm_key=ftok(_FILE_,'t'); //获取路径下系统的进程标识符 $shm_id=shmop_open($shm_key,"c",0644,100); //建立一个共享内存 $result=shmop_write($shm_id,'爱玩C',0); //从0开始写入 ?>
<?php $key=ftok(__FILE__,'t'); //获取当前路径下系统的进程标识符 ?>
<?php $f_id=ftok('home/test/t.php','R'); $key=msg_get_queue($f_id,0666); //$f_id:系统标识符.0666:进程间通讯权限,默认为0666.如果能成功存取系统标识的信息队列,则返回一个标识符 if(msg_receive($key,1,$type,100,$msg,true,0,$error)){ echo "$msg"; } else{ echo $error; } msg_remove_queue($key); //释放连接的资源 ?>
<?php $f_id=ftok('home/test/t.php','R'); //获取系统标识符 $key=msg_get_queue($f_id,0666); //建立连接 if(msg_receive($key,1,$msg_type,1600,$msg,true,0,$msg_error)){ if($msg != 'quit'){ //如果不是末尾 echo "$msg"; } } else{ echo $msg_error; //出现错误则输出错误信息 } msg_remove_queue($key); //释放连接的资源 ?>
<?php $f_id=ftok('home/test/t.php','R'); //获取系统标识符 $key=msg_get_queue($f_id,0666); //建立连接 if(!msg_send($key,1,'爱玩C',true,true,$msg_error)){ //发送消息进队列 echo "消息没有被发送,错误:$msg_error"; //返回错误消息 } msg_remove_queue($key); //释放连接的资源 ?>
<?php $f_id=ftok('home/test/t.php','R'); //获取系统标识符 $key=msg_get_queue($f_id,0666); //建立连接 if(!msg_send($key,1,'爱玩C',true,true,$msg_error)){ //发送消息进队列 echo "消息没有被发送,错误:$msg_error"; //返回错误消息 } msg_set_queue($key,array('msg_perm.uid'=>'80')); //$key:信息队列的标识符,后面是数组数据 print_r(msg_stat_queue($key)); //输出结构信息 ?>
<?php $f_id=ftok('home/test/t.php','R'); //获取系统标识符 $key=sem_get($key,1024,0644); sem_acquire($key); //捕获系统进程的信号数量,若捕获信号的数量超过限度,则进程在捕捉时会先封锁住信号 ?>
<?php $f_id=ftok('home/test/t.php','R'); //获取系统标识符 $key=sem_get($key,1024,0644); //1024:同时可取得的最大处理数量,0644:控制的权限 ?>
<?php $f_id=ftok('home/test/t.php','R'); //获取系统标识符 $key=sem_get($key,1024,0644); //获取一个信号的标识符 $data=shm_attach($key,1024); //建立一个共享区 $shm_put_var($data,$ine,'爱玩C'); //写入内容 shm_detach($data); //关闭连接释放资源 sem_release($key); //释放信号资源 ?>
<?php $f_id=ftok('home/test/t.php','R'); //获取系统标识符 $key=sem_get($key,1024,0644); //获取一个信号的标识符 $data=shm_attach($key,1024); //建立一个共享区 $shm_put_var($data,$ine,'爱玩C'); //写入内容 sem_remove($key); //删除信号连接 ?>
<?php $f_id=ftok('home/test/t.php','R'); //获取系统标识符 $key=sem_get($key,1024,0644); //获取一个信号的标识符 $data=shm_attach($key,1024); //建立一个共享区 print_r(shm_get_var($data,$ine)); //读取共享中的内容 shm_detach($data); //关闭连接释放资源 ?>
<?php $f_id=ftok('home/test/t.php','R'); //获取系统标识符 $key=sem_get($key,1024,0644); //获取一个信号的标识符 $data=shm_attach($key,1024); //建立一个共享区 $shm_put_var($data,$ine,'爱玩C'); //将内容写入共享区域 print_r(shm_get_var($data,$ine)); //$data:共享内存的标识符,$ine变量的名称 shm_detach($data); //关闭连接释放资源 ?>
<?php $f_id=ftok('home/test/t.php','R'); //获取系统标识符 $key=sem_get($key,1024,0644); //获取一个信号的标识符 $data=shm_attach($key,1024); //建立一个共享区 $shm_put_var($data,$ine,'爱玩C'); //将内容写入共享区域 print_r(shm_get_var($data,$ine)); //读取内存中的信息 shm_remove_var($data,$ine); //清除共享中指定的变量值 print_r(shm_get_var($data,$ine)); shm_detach($data); //关闭连接释放资源 ?>
<?php $f_id=ftok('home/test/t.php','R'); //获取系统标识符 $key=sem_get($key,1024,0644); //获取一个信号的标识符 $data=shm_attach($key,1024); //建立一个共享区 $shm_put_var($data,$ine,'爱玩C'); //将内容写入共享区域 print_r(shm_get_var($data,$ine)); //读取内存中的信息 shm_remove($data,$ine); //清除共享中所有信息 print_r(shm_get_var($data,$ine)); shm_detach($data); //关闭连接释放资源 ?>