铁血霸主 2007-8-1 22:34
一段在linux下测试共享内存的程序
<p>1 share<FONT color=#006600>.</FONT><FONT color=#0000cc>php 分配</FONT><FONT color=#006600>/</FONT><FONT color=#0000cc>删除共享内存<BR><BR><BR><BR><?php<BR><BR><BR><BR></FONT><FONT color=#006600>if</FONT><FONT color=#006600>(</FONT><FONT color=#0000cc>$stop</FONT><FONT color=#006600>!</FONT><FONT color=#006600>=</FONT><FONT color=#0000cc>1</FONT><FONT color=#006600>)</FONT><BR><BR><FONT color=#006600>{</FONT><BR><BR><FONT color=#b8860b>// 判断是否已经创建<BR><BR>$shm_id = @shmop_open(0xff3, "a", 0644, 100);<BR><BR>if($shm_id) {<BR><BR>echo "内存块已经创建\n";<BR><BR>exit();<BR><BR>}<BR><BR>// 创建 100 字节的系统标识为 0xff3 的共享内存块<BR><BR>$shm_id = @shmop_open(0xff3, "c", 0644, 100);<BR><BR>if(!$shm_id) {<BR><BR>echo "共享内存块创建失败\n";<BR><BR>}<BR><BR><BR><BR>// 写一些内容<BR><BR>for($i=0;$i<10;$i++)<BR><BR>{<BR><BR>$shm_bytes_written = shmop_write($shm_id, "共享块$i", ($i*10));<BR><BR>}<BR><BR>echo "创建成功";<BR><BR>shmop_close($shm_id);<BR><BR>}<BR><BR>else<BR><BR>{<BR><BR>// 是否存在<BR><BR>$shm_id = @shmop_open(0xff3, "a", 0644, 100);<BR><BR>if(!$shm_id) {<BR><BR>echo "没有找到共享内存块\n";<BR><BR>exit();<BR><BR>}<BR><BR>// 删除<BR><BR>if(!shmop_delete($shm_id)) {<BR><BR>echo "删除失败.";<BR><BR>}<BR><BR>shmop_close($shm_id);<BR><BR>echo "内存块删除完毕!";<BR><BR>}<BR><BR></FONT><FONT color=#0000cc>?><BR><BR><BR><BR>2 share2</FONT><FONT color=#006600>.</FONT><FONT color=#0000cc>php 用于显示共享内存的内容<BR><BR><BR><BR><?php<BR><BR><BR><BR></FONT><FONT color=#b8860b>// 打开共享内存块 0xff3<BR><BR>$shm_id = @shmop_open(0xff3, "a", 0644, 100);<BR><BR>if(!$shm_id) {<BR><BR>echo "不能打开共享内存块\n";<BR><BR>exit();<BR><BR>}<BR><BR><BR><BR>// 读出里面的内容<BR><BR>$my_string = shmop_read($shm_id, 0, $shm_size);<BR><BR>if(!$my_string) {<BR><BR>echo "没有内容或者不能读\n";<BR><BR>}<BR><BR>echo $my_string."\n";<BR><BR>shmop_close($shm_id);<BR><BR></FONT></p> <center><input type="image" onclick=copyToClipBoard() src="http://www.phpchina.com/images/phpcn_book_bu_tj.gif" border="0"></center>