也许Shared Memory函数可以一用,但是还是觉得土了。

解决方案 »

  1.   

    在phpbuilder里面的http://www.phpbuilder.com/snippet里面曾经看到过一个php监视系统进程的类,但是使用php5写的,在linux下的.php是单进程的,统称php里面别人说得多进程都是通过socket搞的,好资源,没有意义.如果真的要做,可以通过iframe来实现, 一个页面中加入几个iframe,不同iframe通过javascript进行通信,有主页面来更新和控制这些iframe.每次有变化,刷新某个iframe,后frame自动刷新.或者xmlhttp也可以,也是要javascirpt来协调.
      

  2.   

    重新问一次吧:
    比如有个访问计数器文件要更新,里面只放了一个自然数
    某个php网页被访问时就读取这个数并加1再写进去。看来很简单,但是由于httpd是多线程的,比如线程1读出数为999,它正准备写1000进去,这是线程2也读了个999出来,线程1往里写了1000,而线程2也往里写了1000。本来应该文件中应该是1001的,但是由于两个线程没有协调,造成错误记录。所以信号灯就是协调这些http线程的。关键是用什么当作信号灯。
      

  3.   

    使用全局变量或者Process Control Functions可能能满足你的要求~~~`
      

  4.   

    Process Control Functions只能用在unix系统上
    全局变量好像没有用吧?
      

  5.   

    不知道shared memory在windows下面能不能用实际上这里有一个明确点
    就是不同的php进程必须从同一个地方获得数值,
    而且也要把值写到同一个地方去
    能做取值写值的操作的
    其实都是守护进程
    比如文件,是系统在监视的
    数据库,是DBS在监视的
    如果不能用锁
    我觉得可以自己写一个守护进程
    监听一个端口
    每次php都从socket读值和写值
    在这个守护进程里做同步和并发的操作但是正如hahawen(变态的大龄青年)所说,
    耗资源是没商量的
      

  6.   

    “其实都是守护进程
    比如文件,是系统在监视的
    数据库,是DBS在监视的”这个说法真的很搞笑。
    完全是曲解了daemon的含义。
    好像写文件写数据库而访问磁盘是应用程序自己的事,系统或DBS只是个警察,负责维持一下秩序。守护进程与信号灯是完全两马事。从深层次讲,信号灯不光是操作系统的事情,而且必须要和硬件平台,比如CPU,或者时序控制器之类的东西结合起来才能实现。我们之所以不需要使用CPU或其他硬件来完成信号灯,是因为操作系统已经将其功能进行了适当的封装。我这个问题换个方式是问,php该如何访问操作系统(windows和unix)的进程信号灯。