2012-10-09 6 views
6

PHPは明らかに今すぐThreadクラスをサポートしています。 MutexおよびCondクラスもあります。それにもかかわらず、良いオプションでコンパイルし、PECL拡張を追加してそれを持つ必要があります。PHP // Thread // Mutex // Condの使い方

どこから始めれば良いチュートリアルがありますか?各クラス/メソッドの公正使用を明確に示すもの。

私はちょうどこれらのクラスを扱う方法がわかりません。私はできるだけ多くの方法を示す非常に簡単なことを行う具体的な例が必要です。

ありがとうございます。

+0

を完成しますまだリリースされていません。 PHP開発者は、おそらくあなたをもっと助けることができます。 – Ryan

答えて

14

それはとしてリリースされましたが、githubのページ... gitの(ソース)あなたができれば、より多くの最近のコード上のウィンドウのダウンロード...

http://pthreads.orgいくつかのより多くの情報が含まれている、PECLで利用可能であり、例をチェックアウト

あなたは、私は、正確な答えを提供し、直接私に連絡して自由に感じることができる何をする必要があるか、より具体的であれば...ドキュメントの欠如については申し訳ありません

、私は...あまりにもフォルダ積極的に私は仕事の周りに少しの時間でpthreadsを開発する - それは私が仕事から休暇中に書かれた私は仕事に戻りました - 時間がわかるとすぐドキュメントはできるだけ更新されます。

スレッドは通常複雑ですが、必ずしも100行未満のスレッドプールは見られませんか? https://github.com/krakjoe/pthreads/blob/master/examples/Pooling.php ... 1つがあります!

あなたはPHPでのスレッドを動作させるための条件やミューテックスについて知っている必要はありません、pthreadsのは簡単peasyのすべて...ボード上の

ジャンプを含み、質問せずに、私はそれを ...

+0

それはまったく私が探していたものでした、ありがとうございました。私は必要に応じてすぐにあなたに連絡することを躊躇しません。 – dader

+1

pthreadはApache内で動作しますか?もしそうなら、私はmpm-prefork、またはmpm-workerを取るべきですか? – dader

+0

すべてのSAPI環境で動作します。 –

1

スレッドはどの言語でも簡単ではありません。それは思考の異なる列車を取る(非線形)。あなたが述べたことは、リリースされたPHPバージョンでは利用できないので、pctnlとshmopの機能を使って遊ぶことをお勧めします。特にpcntl_fork。両方ともしばらくしてサポートされています。それはマルチ処理であり、スレッド化ではありませんが、あなたが探しているものを達成するかもしれません。しかし、スレッディングはより効率的です。

通常、フォークを使用して親プロセスが作業をチェックし、フォークされたプロセスに委任し、子プロセスが作業をしている間に作業を確認します。親プロセスは、子プロセスの状態をチェックできます。たとえば、特定の数の子プロセスのみをフォークし、別のプロセスをフォークする前に完了するのを待つことができます。

私はCPU負荷が高くなった時点で最大500プロセスをフォークしました。親プロセスはシステム負荷をチェックし、負荷が高すぎる場合はフォークしません。

本当に必要な場合は、共有メモリ(shmop関数)を使用して、スレッド化で得られる多くの機能を得ることができます。

+1

あなたの答えに感謝します。私はすでにpcntl_forkを使っていましたが、それはいくつかの仕事をしていますが、スレッド化はプロセス間通信のオーバーヘッドを節約することができます(スレッディングは異なるスレッド間で変数を共有するという大きな機能を提供すると仮定します。 ?)。特に、私は、不変のオブジェクトを使うとき(私は間違っていると思いますか?) – dader

+0

あなたは正しいです、スレッドはオーバーヘッドを節約します。スレッドを使わずに共有メモリ関数で "変数共有"を行うことができます。正直なところ、スレッドの処理やプロセスのオーバーヘッドを心配する人は、おそらくPHP以外の言語を調べるべきでしょう。 –

+0

私は全くあなたに同意します、PHPはこの仕事のための選択ではありません。 – dader

関連する問題