PHP はデフォルトではマルチスレッドをサポートしていません。マルチスレッドを使用するには、pthread 拡張機能をインストールする必要があります。pthread 拡張機能をインストールするには、--enable- PHP を再コンパイルするための maininer-zts パラメータこのパラメータは、PHP をコンパイルするときに使用するスレッドセーフなメソッドを指定します。
PHP 実装
PHP によって実装されたスレッド セーフティは、主に TSRM メカニズムを使用してグローバル変数と静的変数を分離し、グローバル変数と静的変数を各スレッドに割り当てます。これらはすべてコピーされ、各スレッドはメイン スレッドのバックアップを使用するため、変数の競合やスレッドの安全性の問題が回避されます。
PHP のマルチスレッド カプセル化により、スレッドの安全性が確保されます。プログラマは、読み取りと書き込みの競合を避けるために、グローバル変数にさまざまなロックを追加することを考慮する必要がなくなりました。また、エラーの可能性が減り、記述されたコードの安全性が高まります。
同時に、PHP がスレッド セーフ オプションをオンにすると、TSRM メカニズムを使用して変数を割り当てて使用するときに追加の損失が発生するため、マルチスレッドを必要としない PHP 環境では、 PHP の ZTS (非スレッド セーフ) バージョンを使用してください。
クラスとメソッド
PHP は、スレッドを Thread クラスにカプセル化します。スレッドの作成は、スレッド オブジェクトをインスタンス化することによって実現されます。クラスのカプセル化により、変数使用方法はコンストラクターを通じてのみ渡すことができ、スレッド操作の結果もクラス変数を通じて渡す必要があります。
コード例:
次は、特定のインターフェイスをリクエストするために使用されるスレッド クラスです。次に、これに基づいて 2 つのマルチスレッド アプリケーションの例を作成します。
class Request extends Thread { public $url; public $response; public function __construct($url) { $this->url = $url; } public function run() { $this->response = file_get_contents($this->url); } }
推奨チュートリアル: PHP ビデオ チュートリアル
以上がphpには複数のスレッドがありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。