1 つのプロセスが個人の英雄主義であるなら、多くのプロセスは集団主義です。 (マルチプロセスとマルチスレッドの違いは厳密には区別されていません)
あなたはもはやローンレンジャーではなく、指揮者です。
一人で歩くのはとても自由ですが、多くの場合、みんなで薪を追加したときほど明るくありません。
これがマルチプロセスについての私の理解です。マルチスレッド プログラミングの主な問題は、通信と同期の問題です。
PHP マルチスレッド プログラミングの背景知識の詳細については、次を参照してください:
PHP マルチプロセス プログラミング (1)
PHP では、pcntl を使用するだけでは、比較的単純な通信の問題を解決するのは非常に困難です。 。
以下にパイプライン通信を紹介します:
1. パイプラインはキューと考えることができ、さまざまなスレッドがパイプラインに書き込み、読み取りを行うことができます。書き込みとは
キューの最後に追加することを意味し、読み取りとはキューの先頭に削除することを意味します。
2. パイプには通常サイズがあり、デフォルトは通常 4K です。つまり、コンテンツが 4K を超える場合は、読み取りのみ可能ですが、書き込みはできません。
3. デフォルトでは、パイプへの書き込み後、パイプを読み取るプログラムがデータの読み取りを完了するまでブロックされます。読み取りプロセスも、プロセスがパイプにデータを書き込むまでブロックされます。もちろん、このデフォルト属性を変更し、stream_set_block 関数を使用して非ブロッキング モードに設定することもできます。
以下は私がパッケージ化したパイプラインクラスです(このクラスの名前付けに問題があり、統一されておらず、統一されたものに変更する時間がありません。通常は最初にテストコードを書いてからパッケージ化します)このチュートリアルはマルチプロセス プログラミング チュートリアル シリーズの一部であるため、このクラスを使用すると、単純なパイプ通信を実装できます。
このパイプライン クラスのアプリケーション部分は 3 番目の部分に配置されます。