PHP でのマルチスレッドの実装は、開発者にとって常に懸念事項です。インターネット アプリケーションの継続的な開発に伴い、多数の同時リクエストを処理する必要性がますます高まっています。この記事では、PHP でマルチスレッドを実装する方法を紹介し、マルチスレッドの利点と適用可能なシナリオを検討し、開発者が複雑な同時実行要件に適切に対処できるように支援します。 PHP でのマルチスレッドのアプリケーションを詳しく見てみましょう。
Concurrency
拡張機能で Parallel を使用してマルチスレッドを実装します
Parallel
並列同時実行拡張機能を使用すると、PHP でマルチスレッドを実装できます。
この拡張機能は、説明スレッド Parallel\Runtime
を提供します。 Parallel\Runtime()
クラスからオブジェクトを作成することで、スレッドを作成できます。
このクラスは、タスクの並列実行をスケジュールするメソッド run()
を提供します。 Closure
をパラメータとして run
メソッドに渡すことができます。
このパラメータは通常、task
と呼ばれます。メソッドの 2 番目のパラメータとして array を指定することもできます。配列の内容はタスクに渡されます。
Parallel
Parallel Concurrency 拡張機能をダウンロードする前に、いくつかの要件があります。 PHP バージョンは 8.0 で、Zend Thread Safe (ZTS) が有効になっている必要があります。
<pthread.h>
ヘッダーも要件の 1 つです。以下に示すように、pecl
から拡張機能をダウンロードできます。
for
ループを使用して、 プログラムの並列実行を テストできます。
たとえば、run()
メソッド内でループを実行し、メソッド外で別のループを実行できます。この場合、コードは並列実行されます。
たとえば、クラス Parallel\Runtime
のオブジェクトを作成し、そのオブジェクトを使用して run()
メソッドを呼び出します。 run()
メソッドで、匿名関数を作成します。
まず、関数内で
シンボルを 50 回出力する for
ループを作成します。次に、run()
メソッドの外側に、-
シンボルを 50 回出力する別の for
ループを作成します。
メソッド内のループは別のスレッドで実行されるため、run()
メソッドの外側のループは同時に実行されます。その結果、以下の出力セクションに示すように、-
と
シンボルが同時に出力されます。
したがって、並列同時実行拡張機能を使用して、PHP でマルチスレッドを実装できます。
サンプルコード:
リーリー出力:
リーリーPHP の
関数を使用して、PHP で並列プロセスを開くことができます。
この関数はプロセスをフォークして並列処理を実現します。プロセスはリソースを共有しません。
このようにして、PHP でマルチスレッドを実装できます。
popen() この関数は、フォークされたプロセスへのパイプを作成します。
関数を反復処理し、複数のプロセスを作成してマルチスレッドを実現できます。 popen()
関数は、最初のパラメータとして command
を、2 番目のパラメータとして mode
を受け取ります。
パターンは
または w
です。
たとえば、5 回ループする
ループを作成します。ループ内に、5 回ループする別の for
ループを作成します。
サブループ内で、配列
を作成し、popen()
関数を保存します。 PHP ファイル message.php
と r
モードを最初と 2 番目のパラメーターとして設定します。
次に、別のサブループを作成し、
関数を使用して $process
を閉じます。
ここでは、最初のサブループで 5 つのプロセスが並列実行されます。プロセスは、
関数を使用して 2 番目のサブループで終了します。
これは、PHP の
関数を使用してマルチスレッドを実装する方法です。
サンプルコード:
以上がPHP でのマルチスレッドの実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。