私は、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間で共有リソースを使用できますか?
この問題を解決するためのアドバイスはありますか?あなたは私が
を使用すると、2つの(子)プロセス間でリソースを共有したい場合は、共有メモリを使用します。 'shm_'関数をチェックしてください。 2つのプロセスはお互いの '$ this-> array'を見ることができません。 –
ありがとう。質問をする前にこのページを見逃している必要があります:http://www.devshed.com/c/a/PHP/Managing-Standalone-Scripts-in-PHP/1/。私はそれがどのように動作するかをお知らせします – iralls