ホームページ >バックエンド開発 >PHPチュートリアル >PHP で並列アルゴリズムを実装するためのベスト プラクティス
マルチコア環境では、PHP で並列アルゴリズムを実装するためのベスト プラクティスは次のとおりです。 マルチプロセス: 複数の CPU コアを最大限に活用するために、さまざまなプロセスを使用してコードを実行します。マルチスレッド: 単一プロセスで複数のスレッドを実行し、メモリ リソースを共有します。コルーチン: 軽量のコルーチンを使用すると、実行を一時停止および再開して、CPU を最大限に活用できます。
マルチコア プロセッサの時代では、並列処理を最大限に活用することがアプリケーションのパフォーマンスを向上させるために重要です。 PHP には、並列アルゴリズムの実装に役立ついくつかの組み込み機能とライブラリがあります。
マルチプロセスを使用すると、複数の CPU コアを最大限に活用して、さまざまなプロセスでコードを実行できます。
<?php $procs = []; for ($i = 0; $i < 4; $i++) { $procs[] = new Process(['php', 'script.php', $i]); } foreach ($procs as $proc) { $proc->start(); } foreach ($procs as $proc) { $proc->wait(); } ?>
この例では、script.php
スクリプトを並行して実行する 4 つの子プロセスを作成し、それぞれが異なるパラメーター $i
を使用します。
マルチスレッドとは、単一プロセスで複数のスレッドを実行してメモリ リソースを共有することです。
<?php $threads = []; for ($i = 0; $i < 4; $i++) { $threads[] = new Thread(function () use ($i) { // 执行代码 }); } foreach ($threads as $thread) { $thread->start(); } foreach ($threads as $thread) { $thread->join(); } ?>
この例では、4 つのスレッドを作成し、それぞれが独自のコード ブロックを実行します。スレッドはプロセスのメモリ空間を共有するため、グローバル変数にアクセスできます。
コルーチンはスレッドに似ていますが、より軽量であり、実行を一時停止および再開できます。
<?php $tasks = [ function () { // 代码块 1 }, function () { // 代码块 2 }, function () { // 代码块 3 }, ]; $scheduler = new Scheduler(); foreach ($tasks as $task) { $scheduler->schedule($task); } $scheduler->run(); ?>
この例では、スケジューラを使用して 3 つのタスクを並行して実行します。コルーチンは自動的に一時停止および再開され、利用可能な CPU を最大限に活用します。
多数の画像を含むディレクトリがあり、各画像のサムネイルを生成する必要があるとします。これは、PHP の並列機能を使用して実現できます。
<?php $images = glob('images/*'); $threads = []; foreach ($images as $image) { $threads[] = new Thread(function ($image) { // 缩略图生成代码 }, $image); } foreach ($threads as $thread) { $thread->start(); } foreach ($threads as $thread) { $thread->join(); } ?>
スレッド プールを使用すると、画像のサムネイル生成を並列化でき、総処理時間を大幅に短縮できます。
以上がPHP で並列アルゴリズムを実装するためのベスト プラクティスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。