2012-03-22 17 views
1

私は、1つのクラスインスタンスのメソッドを呼び出す2つの子プロセス(pcntl_fork())を生成するPHPスクリプトを用意しています説明)。PHPの子スレッド間で共有されるリソース

 
    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') 

Iは、同じリソースを(一方はそこからポップしながら、一つのプロセスは、型配列のパブリッククラス変数に情報をプッシュ)を共有するために、これらのプロセスを意図。現在のところ、両方のプロセスが同時に実行されますが、1つのみがクラス変数$ arrayにアクセスできるようです。

個別のPID間で共有リソースを使用できますか?

この問題を解決するためのアドバイスはありますか?あなたは私が

+1

を使用すると、2つの(子)プロセス間でリソースを共有したい場合は、共有メモリを使用します。 'shm_'関数をチェックしてください。 2つのプロセスはお互いの '$ this-> array'を見ることができません。 –

+0

ありがとう。質問をする前にこのページを見逃している必要があります:http://www.devshed.com/c/a/PHP/Managing-Standalone-Scripts-in-PHP/1/。私はそれがどのように動作するかをお知らせします – iralls

答えて

1

は、私はタスクを達成するために、共有メモリを使用することができました知らせて任意のより多くの情報やコードスニペットが必要な場合は

を(私は異なる間隔でそれらを実行するつもりのように私は別のプロセスを維持したいと思います) 。興味のある方のために、ここで見てみましょう:

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

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

関連する問題