PHP子线程之间的共享资源

时间:2012-03-22 14:52:21

标签: php multithreading process resources scope

我有一个PHP脚本,它产生两个子进程(pcntl_fork()),每个进程调用单个类实例的方法(类和方法的名称及其功能被简化以便于解释)。

    class Main_Class 
    {

     public $array = array();

     public function push($value) {
      $this->array[] = $value;
     }
     public function pop() {
      return array_shift($this->array);
     }
    }

    $pc = new Thread_Creator();
    $main_class = new Main_Class();

    $pc->fork(array($main_class, 'push'), 1);
    $pc->fork(array($main_class, 'pop'), 1);

    The fork method is executed like so: call_user_func($main_class, 'pushToArray')

我希望这些进程共享相同的资源(一个进程将信息推送到类型为array的公共类变量中,同时从中弹出一个)。目前,两个进程同时运行,但只有一个似乎可以访问类变量$ array。

单独的PID之间是否可以共享资源?

有任何解决此问题的建议吗? (我希望将这些过程分开,因为我打算以不同的间隔运行它们)

如果您需要更多信息或代码段,请告诉我们

1 个答案:

答案 0 :(得分:2)

我能够使用共享内存来完成任务。对于那些感兴趣的人,请看一下:

http://onlamp.com/pub/a/php/2004/05/13/shared_memory.html?page=2

http://www.php.net/manual/en/book.sem.php