<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head><meta forua="true" http-equiv="Cache-Control" content="max-age=0" /></head>
<card title="PHP进程之间实现共享内存的方法（单台服务器的情况下）" id="card1">
<p> 游客</p><p>
标题:PHP进程之间实现共享内存的方法（单台服务器的情况下）<br/>
正文:<br/>
开发人员要想使php进程实现共享内存的读写，首先就要支持IPC函数，即php编译安装时指定：--enable-shmop  与--enable-sysvsem 两个选项。IPC (Inter-process communication) 是一个Unix标准机制，它提供了使得在同一台主机不同进程之间可以互相的方法。基本的IPC处理机制有3种：它们分别是共享内存、信号量和消息队列。本文中我们主要讨论共享内存和信号量的使用。<br/><br/>在不同的处理进程之间使用共享内存是一个实现不同进程之间相互的好方法。如果你在一个进程中向所共享的内存写入一段信息，那么所有其他的进程也可以看到这段被写入的数据。非常方便。在PHP中有了共享内存的帮助，你可以实现不同进程在运行同一段PHP脚本时返回不同的结果。或实现对PHP同时运行数量的实时查询等等。共享内存允许两个或者多个进程共享一给定的存储区。因为数据不需要在客户机和服务器之间复制，所以这是最快的一种IPC。使用共享内存的唯一窍门是多个进程对一给定存储区的同步存取。如何建立一个共享内存段呢？下面的代码可以帮你建立共享内存。代码如下:$shm_id = shmop_open($key， $mode， $perm， $size);注意，每个共享内存段都有一个唯一的ID， 在PHP中，shmop_open会把建立好的共享内存段的ID返回，这里我们用$shm_id记录它。而$key是一个我们逻辑上表示共享内存段的Key值。不同进程只要选择同一个Key id就可以共享同一段存储段。习惯上我们用一个串（类似文件名一样的东西）的散列值作为key id. $mode指明了共享内存段的使用方式。这里由于是新建，因此值为'c' –取create之意。如果你是已经建立过的共享内存那么请用'a'， 取access之意。$perm参数定义了的权限，8进制，关于权限定义请看UNIX文件系统帮助。$size定义了共享内存的大小。尽管有点象fopen(文件处理)你可不要当它同文件处理一样。后面的描述你将看到这一点。例如：代码如下:$shm_id = shmop_open(0xff3， &quot;c&quot;， 0644， 100);这里我们打开了一个共享内存段 键值0xff3 –rw-r—r—格式，大小为100字节。如果需要已有的共享内存段，你必须在调用shmop_o<br/><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1539&amp;Page=1">[&lt;&lt;]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1539&amp;Page=1">[[1]]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1539&amp;Page=2">[2]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1539&amp;Page=3">[3]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1539&amp;Page=3">[&gt;&gt;]</a><br/>
<br/>
<a href="wap.asp?act=Com&amp;id=1539">查看评论(0)</a><br/>
<a href="wap.asp?act=AddCom&amp;inpId=1539">发表评论</a><br/><br/>

<br/>

<br/>
<a href="http://camnpr.com/wap.asp">首页</a>
</p>
</card>
</wml>