PHP 開発では、一部のコードの完了に時間がかかり、ユーザー エクスペリエンスや Web サイトのパフォーマンスに影響を与える可能性があるため、非同期実行が非常に重要になります。
非同期実行とは何ですか?
非同期実行とは、プログラムの実行中にバックグラウンドでコードを実行できるようにすることを指します。つまり、コードの実行結果を待っている間、プログラムは他のコードの実行を継続できます。
PHP には、非同期実行の主な方法として、マルチスレッドと非同期ノンブロッキングの 2 つがあります。
マルチスレッドとは、プログラム内で複数のスレッドを開始することを指し、各スレッドは同時に異なるタスクを実行できます。非同期ノンブロッキングとは、コードが別のコードの実行が完了するのを待たず、コールバック関数の形式と同様に、実行中に他の操作を実行することを意味します。
これら 2 つの非同期実行メソッドをそれぞれ紹介しましょう。
マルチスレッドを使用した非同期実行の実装
PHP にはマルチスレッドのサポートが組み込まれていませんが、拡張機能を使用して実装できます。一般的な拡張機能には、pthread や parle などがあります。ここでは、pthreads 拡張機能を例として取り上げます。
まず、サーバー上の PHP に pthreads 拡張機能がインストールされていることを確認する必要があります。ターミナルで次のコマンドを実行して確認できます。
php -m | grep -i pthreads
pthreads が表示されたら、インストールが成功したことを意味します。
次に、次のコードを使用してマルチスレッドの非同期実行を実装できます。
class MyThread extends Thread { public function run() { // 执行需要异步执行的代码 } } // 创建一个线程对象 $thread = new MyThread(); // 启动线程,异步执行代码 $thread->start(); // 执行其他代码,但不会等待 $thread 的执行结果
非同期ノンブロッキングを使用して非同期実行を実装します
マルチスレッドに加えて、非同期実行を実装します。 、非同期のノンブロッキング方法を使用して、非同期実行を実現することもできます。この方法はマルチスレッドよりも軽量ですが、いくつかの非同期プログラミングの概念とテクニックを習得する必要があります。
PHP 7 には、非同期ノンブロッキング プログラミングのサポートが組み込まれており、次のコードを使用して実装できます。
$handle = fopen("path/to/file", "rb"); stream_set_blocking($handle, 0); while (!feof($handle)) { // 非阻塞读取文件 fread($handle, 8192); // 继续执行其他代码 // ... }
非同期ノンブロッキング メソッドを使用することに注意してください。非同期実行を実装すると、コードの可読性が低下する可能性があり、より複雑なタスクによっては、マルチスレッドまたは他の形式の非同期実行の使用が必要になる場合があります。
概要
非同期実行は PHP 開発において特に重要であり、コード時間を短縮し、プログラムのパフォーマンスとユーザー エクスペリエンスを向上させることができます。非同期実行を実装するために、マルチスレッドと非同期ノンブロッキングという 2 つの方法を導入しました。実際の開発では、状況に応じて適切な方法を選択して非同期実行を実現する必要があります。
以上がphpの非同期実行方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。