「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > PHP での同時実行性と並列性の探求: 実践的なチュートリアルとヒント

PHP での同時実行性と並列性の探求: 実践的なチュートリアルとヒント

2024 年 11 月 3 日に公開
ブラウズ:193

Exploring Concurrency and Parallelism in PHP: Hands-On Tutorials and Tips

同時実行性と並列処理を理解することは、特に同時に処理する必要がある複数のタスクや操作を扱う場合、効率的な PHP アプリケーションを作成するために重要です。ここでは、PHP での並行性と並列性を理解して実装するためのステップバイステップのガイドを、実践的な例と説明とともに示します。

1.同時実行性と並列性

  • 同時実行性: 実行をインターリーブすることによって複数のタスクを一度に処理するシステムの能力を指します。必ずしもタスクが同時に実行されるわけではなく、同時に進行しているように見えるように管理されているだけです。

  • 並列処理: 複数のプロセッサまたはコアを利用して、複数のタスクを同時に実行します。これは、タスクが文字通り並行して実行される同時実行性のサブセットです。

2. PHP の同時実行性

PHP は伝統的にシングルスレッドであり、一度に 1 つのタスクを処理します。ただし、非同期処理や外部ツールの使用などの手法によって同時実行性を実現することは可能です。

2.1.同時実行のための pcntl_fork の使用

PHP の pcntl (プロセス制御) 拡張機能を使用すると、プロセス制御が可能になり、プロセスをフォークすることで同時実行性を実現できます。

前提条件:

  • PHP インストールで pcntl 拡張機能が有効になっていることを確認してください。


説明

  • pcntl_fork() は新しいプロセスを作成します。
  • 親プロセスと子プロセスは同時に実行されます。
  • 親プロセスは、pcntl_wait() を使用して子プロセスが完了するのを待ちます。

2.2. ReactPHPによる非同期処理

ReactPHP は、PHP のイベント駆動型プログラミング用のライブラリであり、非同期操作が可能です。

インストール:

composer require react/event-loop


run();
?>

説明

  • ReactPHP は非同期タスクの実行を可能にします。
  • タスクは同時に実行され、イベント ループがその実行を管理します。

3. PHP の並列処理

並列処理には、複数のタスクを同時に実行することが含まれます。 PHP では、これは並列処理用に設計されたツールとライブラリを使用して実現できます。

3.1.並列拡張機能の使用

並列拡張機能により、マルチスレッドを有効にすることで PHP での並列処理が可能になります。

インストール:

  • PECL を使用して並列拡張機能をインストールするか、ソースからコンパイルします。


run(function() {
    task('1');
});
$future2 = $runtime2->run(function() {
    task('2');
});

// Wait for tasks to complete
$future1->value();
$future2->value();
?>

説明

  • 並列では、複数のランタイム環境を作成できます。
  • タスクは異なるスレッド間で並行して実行されます。

3.2. pthreads 拡張機能の使用

pthreads 拡張機能を使用すると、PHP スクリプトでスレッドの作成、読み取り、書き込みを行うことができます。

インストール:

  • PECL を使用して pthreads 拡張機能をインストールします。


name = $name;
    }

    public function run() {
        echo "Thread {$this->name} started\n";
        sleep(2); // Simulate a task
        echo "Thread {$this->name} completed\n";
    }
}

$worker1 = new Worker('1');
$worker2 = new Worker('2');

// Start threads
$worker1->start();
$worker2->start();

// Join threads to main script
$worker1->join();
$worker2->join();
?>

説明

  • pthreads はスレッド化サポートを提供します。
  • スレッドは複数の CPU コアを利用してタスクを並行して実行します。

4.結論

PHP での同時実行性と並列性を理解して実装すると、アプリケーションのパフォーマンスと応答性を大幅に向上させることができます。プロセスフォーク、非同期処理、マルチスレッドなどの手法を使用すると、複数のタスクをより効率的に処理できます。最適なパフォーマンスを達成するには、ニーズと環境に最も適したアプローチを選択してください。

これらの例は、特定のユースケースと PHP 環境に基づいて自由に調整してください。

リリースステートメント この記事は次の場所に転載されています: https://dev.to/mdarifulhaque/exploring-concurrency-and-Parallelism-in-php-hands-on-tutorials-and-tips-2kc6?1 侵害がある場合は、study_golang にご連絡ください。 @163.com 削除
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3